You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by su...@apache.org on 2016/10/28 14:33:57 UTC
[01/50] [abbrv] hadoop git commit: YARN-4743. FairSharePolicy breaks
TimSort assumption. (Zephyr Guo and Yufei Gu via kasha) [Forced Update!]
Repository: hadoop
Updated Branches:
refs/heads/YARN-3368 07ae9db73 -> 97143e966 (forced update)
YARN-4743. FairSharePolicy breaks TimSort assumption. (Zephyr Guo and Yufei Gu via kasha)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/4df8ed63
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/4df8ed63
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/4df8ed63
Branch: refs/heads/YARN-3368
Commit: 4df8ed63ed93f2542e4b48f521b0cc6624ab59c1
Parents: b2c4f24
Author: Karthik Kambatla <ka...@cloudera.com>
Authored: Thu Oct 27 17:42:44 2016 -0700
Committer: Karthik Kambatla <ka...@cloudera.com>
Committed: Thu Oct 27 17:45:48 2016 -0700
----------------------------------------------------------------------
.../fair/policies/FairSharePolicy.java | 31 ++-
.../scheduler/fair/TestSchedulingPolicy.java | 228 +++++++++++++++++++
2 files changed, 254 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4df8ed63/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java
index 6aa8405..f120f0f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java
@@ -63,7 +63,11 @@ public class FairSharePolicy extends SchedulingPolicy {
*
* Schedulables above their min share are compared by (runningTasks / weight).
* If all weights are equal, slots are given to the job with the fewest tasks;
- * otherwise, jobs with more weight get proportionally more slots.
+ * otherwise, jobs with more weight get proportionally more slots. If weight
+ * equals to 0, we can't compare Schedulables by (resource usage/weight).
+ * There are two situations: 1)All weights equal to 0, slots are given
+ * to one with less resource usage. 2)Only one of weight equals to 0, slots
+ * are given to the one with non-zero weight.
*/
private static class FairShareComparator implements Comparator<Schedulable>,
Serializable {
@@ -74,6 +78,7 @@ public class FairSharePolicy extends SchedulingPolicy {
public int compare(Schedulable s1, Schedulable s2) {
double minShareRatio1, minShareRatio2;
double useToWeightRatio1, useToWeightRatio2;
+ double weight1, weight2;
Resource minShare1 = Resources.min(RESOURCE_CALCULATOR, null,
s1.getMinShare(), s1.getDemand());
Resource minShare2 = Resources.min(RESOURCE_CALCULATOR, null,
@@ -86,10 +91,26 @@ public class FairSharePolicy extends SchedulingPolicy {
/ Resources.max(RESOURCE_CALCULATOR, null, minShare1, ONE).getMemorySize();
minShareRatio2 = (double) s2.getResourceUsage().getMemorySize()
/ Resources.max(RESOURCE_CALCULATOR, null, minShare2, ONE).getMemorySize();
- useToWeightRatio1 = s1.getResourceUsage().getMemorySize() /
- s1.getWeights().getWeight(ResourceType.MEMORY);
- useToWeightRatio2 = s2.getResourceUsage().getMemorySize() /
- s2.getWeights().getWeight(ResourceType.MEMORY);
+
+ weight1 = s1.getWeights().getWeight(ResourceType.MEMORY);
+ weight2 = s2.getWeights().getWeight(ResourceType.MEMORY);
+ if (weight1 > 0.0 && weight2 > 0.0) {
+ useToWeightRatio1 = s1.getResourceUsage().getMemorySize() / weight1;
+ useToWeightRatio2 = s2.getResourceUsage().getMemorySize() / weight2;
+ } else { // Either weight1 or weight2 equals to 0
+ if (weight1 == weight2) {
+ // If they have same weight, just compare usage
+ useToWeightRatio1 = s1.getResourceUsage().getMemorySize();
+ useToWeightRatio2 = s2.getResourceUsage().getMemorySize();
+ } else {
+ // By setting useToWeightRatios to negative weights, we give the
+ // zero-weight one less priority, so the non-zero weight one will
+ // be given slots.
+ useToWeightRatio1 = -weight1;
+ useToWeightRatio2 = -weight2;
+ }
+ }
+
int res = 0;
if (s1Needy && !s2Needy)
res = -1;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4df8ed63/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestSchedulingPolicy.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestSchedulingPolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestSchedulingPolicy.java
index eeedb09..dea2dd1 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestSchedulingPolicy.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestSchedulingPolicy.java
@@ -21,13 +21,25 @@ package org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Stack;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.yarn.api.records.Priority;
+import org.apache.hadoop.yarn.api.records.Resource;
+import org.apache.hadoop.yarn.server.resourcemanager.resource.ResourceWeights;
+import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.DominantResourceFairnessPolicy;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.FairSharePolicy;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.FifoPolicy;
+import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
public class TestSchedulingPolicy {
+ private static final Log LOG = LogFactory.getLog(TestSchedulingPolicy.class);
@Test(timeout = 1000)
public void testParseSchedulingPolicy()
@@ -125,4 +137,220 @@ public class TestSchedulingPolicy {
assertFalse(ERR,
SchedulingPolicy.isApplicableTo(policy, SchedulingPolicy.DEPTH_ANY));
}
+
+ /**
+ * Test whether {@link FairSharePolicy.FairShareComparator} is transitive.
+ */
+ @Test
+ public void testFairShareComparatorTransitivity() {
+ FairSharePolicy policy = new FairSharePolicy();
+ Comparator<Schedulable> fairShareComparator = policy.getComparator();
+ FairShareComparatorTester tester =
+ new FairShareComparatorTester(fairShareComparator);
+ tester.testTransitivity();
+ }
+
+
+ /**
+ * This class is responsible for testing the transitivity of
+ * {@link FairSharePolicy.FairShareComparator}. We will generate
+ * a lot of triples(each triple contains three {@link Schedulable}),
+ * and then we verify transitivity by using each triple.
+ *
+ * <p>How to generate:</p>
+ * For each field in {@link Schedulable} we all have a data collection. We
+ * combine these data to construct a {@link Schedulable}, and generate all
+ * cases of triple by DFS(depth first search algorithm). We can get 100% code
+ * coverage by DFS.
+ */
+ private class FairShareComparatorTester {
+ private Comparator<Schedulable> fairShareComparator;
+
+ // Use the following data collections to generate three Schedulable.
+ private Resource minShare = Resource.newInstance(0, 1);
+
+ private Resource demand = Resource.newInstance(4, 1);
+
+ private String[] nameCollection = {"A", "B", "C"};
+
+ private long[] startTimeColloection = {1L, 2L, 3L};
+
+ private Resource[] usageCollection = {
+ Resource.newInstance(0, 1), Resource.newInstance(2, 1),
+ Resource.newInstance(4, 1) };
+
+ private ResourceWeights[] weightsCollection = {
+ new ResourceWeights(0.0f), new ResourceWeights(1.0f),
+ new ResourceWeights(2.0f) };
+
+
+
+ public FairShareComparatorTester(
+ Comparator<Schedulable> fairShareComparator) {
+ this.fairShareComparator = fairShareComparator;
+ }
+
+ public void testTransitivity() {
+ generateAndTest(new Stack<Schedulable>());
+ }
+
+ private void generateAndTest(Stack<Schedulable> genSchedulable) {
+ if (genSchedulable.size() == 3) {
+ // We get three Schedulable objects, let's use them to check the
+ // comparator.
+ Assert.assertTrue("The comparator must ensure transitivity",
+ checkTransitivity(genSchedulable));
+ return;
+ }
+
+ for (int i = 0; i < nameCollection.length; i++) {
+ for (int j = 0; j < startTimeColloection.length; j++) {
+ for (int k = 0; k < usageCollection.length; k++) {
+ for (int t = 0; t < weightsCollection.length; t++) {
+ genSchedulable.push(createSchedulable(i, j, k, t));
+ generateAndTest(genSchedulable);
+ genSchedulable.pop();
+ }
+ }
+ }
+ }
+
+ }
+
+ private Schedulable createSchedulable(
+ int nameIdx, int startTimeIdx, int usageIdx, int weightsIdx) {
+ return new MockSchedulable(minShare, demand, nameCollection[nameIdx],
+ startTimeColloection[startTimeIdx], usageCollection[usageIdx],
+ weightsCollection[weightsIdx]);
+ }
+
+ private boolean checkTransitivity(
+ Collection<Schedulable> schedulableObjs) {
+
+ Assert.assertEquals(3, schedulableObjs.size());
+ Schedulable[] copy = schedulableObjs.toArray(new Schedulable[3]);
+
+ if (fairShareComparator.compare(copy[0], copy[1]) > 0) {
+ swap(copy, 0, 1);
+ }
+
+ if (fairShareComparator.compare(copy[1], copy[2]) > 0) {
+ swap(copy, 1, 2);
+
+ if (fairShareComparator.compare(copy[0], copy[1]) > 0) {
+ swap(copy, 0, 1);
+ }
+ }
+
+ // Here, we have got the following condition:
+ // copy[0] <= copy[1] && copy[1] <= copy[2]
+ //
+ // So, just check copy[0] <= copy[2]
+ if (fairShareComparator.compare(copy[0], copy[2]) <= 0) {
+ return true;
+ } else {
+ LOG.fatal("Failure data: " + copy[0] + " " + copy[1] + " " + copy[2]);
+ return false;
+ }
+ }
+
+ private void swap(Schedulable[] array, int x, int y) {
+ Schedulable tmp = array[x];
+ array[x] = array[y];
+ array[y] = tmp;
+ }
+
+
+ private class MockSchedulable implements Schedulable {
+ private Resource minShare;
+ private Resource demand;
+ private String name;
+ private long startTime;
+ private Resource usage;
+ private ResourceWeights weights;
+
+ public MockSchedulable(Resource minShare, Resource demand, String name,
+ long startTime, Resource usage, ResourceWeights weights) {
+ this.minShare = minShare;
+ this.demand = demand;
+ this.name = name;
+ this.startTime = startTime;
+ this.usage = usage;
+ this.weights = weights;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public Resource getDemand() {
+ return demand;
+ }
+
+ @Override
+ public Resource getResourceUsage() {
+ return usage;
+ }
+
+ @Override
+ public Resource getMinShare() {
+ return minShare;
+ }
+
+ @Override
+ public ResourceWeights getWeights() {
+ return weights;
+ }
+
+ @Override
+ public long getStartTime() {
+ return startTime;
+ }
+
+ @Override
+ public Resource getMaxShare() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Priority getPriority() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void updateDemand() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Resource assignContainer(FSSchedulerNode node) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public RMContainer preemptContainer() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Resource getFairShare() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setFairShare(Resource fairShare) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String toString() {
+ return "{name:" + name + ", start:" + startTime + ", usage:" + usage +
+ ", weights:" + weights + ", demand:" + demand +
+ ", minShare:" + minShare + "}";
+ }
+ }
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[37/50] [abbrv] hadoop git commit: YARN-5504. [YARN-3368] Fix YARN UI
build pom.xml (Sreenath Somarajapuram via Sunil G)
Posted by su...@apache.org.
YARN-5504. [YARN-3368] Fix YARN UI build pom.xml (Sreenath Somarajapuram via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2a9c5db6
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2a9c5db6
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2a9c5db6
Branch: refs/heads/YARN-3368
Commit: 2a9c5db66abfd02e31933cafcf001193e165a482
Parents: a2a32d7
Author: sunilg <su...@apache.org>
Authored: Thu Aug 25 23:21:29 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn/hadoop-yarn-ui/pom.xml | 59 +++++---------------
.../src/main/webapp/ember-cli-build.js | 2 +-
.../hadoop-yarn-ui/src/main/webapp/package.json | 3 +-
3 files changed, 17 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a9c5db6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
index 2933a76..fca8d30 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
@@ -35,7 +35,7 @@
<node.executable>node</node.executable>
<nodeVersion>v0.12.2</nodeVersion>
<npmVersion>2.10.0</npmVersion>
- <skipTests>false</skipTests>
+ <keep-ui-build-cache>false</keep-ui-build-cache>
</properties>
<build>
@@ -60,19 +60,20 @@
</plugin>
<plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>3.0.0</version>
- <configuration>
- <followSymLinks>false</followSymLinks>
- <filesets>
- <fileset>
- <directory>${basedir}/src/main/webapp/bower_components</directory>
- </fileset>
- <fileset>
- <directory>${basedir}/src/main/webapp/node_modules</directory>
- </fileset>
- </filesets>
- </configuration>
+ <artifactId>maven-clean-plugin</artifactId>
+ <version>3.0.0</version>
+ <configuration>
+ <skip>${keep-ui-build-cache}</skip>
+ <followSymLinks>false</followSymLinks>
+ <filesets>
+ <fileset>
+ <directory>${basedir}/src/main/webapp/bower_components</directory>
+ </fileset>
+ <fileset>
+ <directory>${basedir}/src/main/webapp/node_modules</directory>
+ </fileset>
+ </filesets>
+ </configuration>
</plugin>
</plugins>
</build>
@@ -126,21 +127,6 @@
</configuration>
</execution>
<execution>
- <phase>generate-sources</phase>
- <id>bower --allow-root install</id>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <workingDirectory>${webappDir}</workingDirectory>
- <executable>bower</executable>
- <arguments>
- <argument>--allow-root</argument>
- <argument>install</argument>
- </arguments>
- </configuration>
- </execution>
- <execution>
<id>ember build</id>
<phase>generate-sources</phase>
<goals>
@@ -158,21 +144,6 @@
</configuration>
</execution>
<execution>
- <id>ember test</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <skip>${skipTests}</skip>
- <workingDirectory>${webappDir}</workingDirectory>
- <executable>ember</executable>
- <arguments>
- <argument>test</argument>
- </arguments>
- </configuration>
- </execution>
- <execution>
<id>cleanup tmp</id>
<phase>generate-sources</phase>
<goals>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a9c5db6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
index d21cc3e..7736c75 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
@@ -22,7 +22,7 @@ var EmberApp = require('ember-cli/lib/broccoli/ember-app');
module.exports = function(defaults) {
var app = new EmberApp(defaults, {
- // Add options here
+ hinting: false
});
app.import("bower_components/datatables/media/css/jquery.dataTables.min.css");
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a9c5db6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
index baa473a..6a4eb16 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
@@ -9,8 +9,7 @@
},
"scripts": {
"build": "ember build",
- "start": "ember server",
- "test": "ember test"
+ "start": "ember server"
},
"repository": "",
"engines": {
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[14/50] [abbrv] hadoop git commit: YARN-5503. [YARN-3368] Add missing
hidden files in webapp folder for deployment (Sreenath Somarajapuram via
Sunil G)
Posted by su...@apache.org.
YARN-5503. [YARN-3368] Add missing hidden files in webapp folder for deployment (Sreenath Somarajapuram via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d6be1e6d
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d6be1e6d
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d6be1e6d
Branch: refs/heads/YARN-3368
Commit: d6be1e6dce03d183545f24c61af09e40fa81ea06
Parents: b4b0dc8
Author: sunilg <su...@apache.org>
Authored: Tue Aug 30 20:58:35 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn/hadoop-yarn-ui/pom.xml | 19 ++++++++++-
.../hadoop-yarn-ui/src/main/webapp/.bowerrc | 4 +++
.../src/main/webapp/.editorconfig | 34 ++++++++++++++++++++
.../hadoop-yarn-ui/src/main/webapp/.ember-cli | 9 ++++++
.../hadoop-yarn-ui/src/main/webapp/.jshintrc | 32 ++++++++++++++++++
.../src/main/webapp/.watchmanconfig | 3 ++
6 files changed, 100 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d6be1e6d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
index fca8d30..b750a73 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
@@ -30,7 +30,7 @@
<packaging>${packaging.type}</packaging>
<properties>
- <packaging.type>jar</packaging.type>
+ <packaging.type>war</packaging.type>
<webappDir>src/main/webapp</webappDir>
<node.executable>node</node.executable>
<nodeVersion>v0.12.2</nodeVersion>
@@ -52,9 +52,26 @@
<exclude>src/main/webapp/bower.json</exclude>
<exclude>src/main/webapp/package.json</exclude>
<exclude>src/main/webapp/testem.json</exclude>
+
+ <exclude>src/main/webapp/dist/**/*</exclude>
+ <exclude>src/main/webapp/tmp/**/*</exclude>
<exclude>src/main/webapp/public/assets/images/**/*</exclude>
+ <exclude>src/main/webapp/public/assets/images/*</exclude>
<exclude>src/main/webapp/public/robots.txt</exclude>
+
+ <exclude>public/assets/images/**/*</exclude>
<exclude>public/crossdomain.xml</exclude>
+
+ <exclude>src/main/webapp/.tmp/**/*</exclude>
+ <exclude>src/main/webapp/.bowerrc</exclude>
+ <exclude>src/main/webapp/.editorconfig</exclude>
+ <exclude>src/main/webapp/.ember-cli</exclude>
+ <exclude>src/main/webapp/.gitignore</exclude>
+ <exclude>src/main/webapp/.jshintrc</exclude>
+ <exclude>src/main/webapp/.travis.yml</exclude>
+ <exclude>src/main/webapp/.watchmanconfig</exclude>
+ <exclude>src/main/webapp/tests/.jshintrc</exclude>
+ <exclude>src/main/webapp/blueprints/.jshintrc</exclude>
</excludes>
</configuration>
</plugin>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d6be1e6d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.bowerrc
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.bowerrc b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.bowerrc
new file mode 100644
index 0000000..959e169
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.bowerrc
@@ -0,0 +1,4 @@
+{
+ "directory": "bower_components",
+ "analytics": false
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d6be1e6d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.editorconfig
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.editorconfig b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.editorconfig
new file mode 100644
index 0000000..47c5438
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.editorconfig
@@ -0,0 +1,34 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+
+[*]
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = space
+indent_size = 2
+
+[*.js]
+indent_style = space
+indent_size = 2
+
+[*.hbs]
+insert_final_newline = false
+indent_style = space
+indent_size = 2
+
+[*.css]
+indent_style = space
+indent_size = 2
+
+[*.html]
+indent_style = space
+indent_size = 2
+
+[*.{diff,md}]
+trim_trailing_whitespace = false
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d6be1e6d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.ember-cli
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.ember-cli b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.ember-cli
new file mode 100644
index 0000000..ee64cfe
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.ember-cli
@@ -0,0 +1,9 @@
+{
+ /**
+ Ember CLI sends analytics information by default. The data is completely
+ anonymous, but there are times when you might want to disable this behavior.
+
+ Setting `disableAnalytics` to true will prevent any data from being sent.
+ */
+ "disableAnalytics": false
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d6be1e6d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.jshintrc
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.jshintrc b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.jshintrc
new file mode 100644
index 0000000..08096ef
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.jshintrc
@@ -0,0 +1,32 @@
+{
+ "predef": [
+ "document",
+ "window",
+ "-Promise"
+ ],
+ "browser": true,
+ "boss": true,
+ "curly": true,
+ "debug": false,
+ "devel": true,
+ "eqeqeq": true,
+ "evil": true,
+ "forin": false,
+ "immed": false,
+ "laxbreak": false,
+ "newcap": true,
+ "noarg": true,
+ "noempty": false,
+ "nonew": false,
+ "nomen": false,
+ "onevar": false,
+ "plusplus": false,
+ "regexp": false,
+ "undef": true,
+ "sub": true,
+ "strict": false,
+ "white": false,
+ "eqnull": true,
+ "esnext": true,
+ "unused": true
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d6be1e6d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.watchmanconfig
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.watchmanconfig b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.watchmanconfig
new file mode 100644
index 0000000..e7834e3
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.watchmanconfig
@@ -0,0 +1,3 @@
+{
+ "ignore_dirs": ["tmp", "dist"]
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[36/50] [abbrv] hadoop git commit: YARN-5497. [YARN-3368] Use
different color for Undefined and Succeeded for Final State in applications
page. (Akhil P B Tan via Sunil G)
Posted by su...@apache.org.
YARN-5497. [YARN-3368] Use different color for Undefined and Succeeded for Final State in applications page. (Akhil P B Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/abe3db9a
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/abe3db9a
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/abe3db9a
Branch: refs/heads/YARN-3368
Commit: abe3db9a06c22f8a841363fa2967705630d15604
Parents: f04d40a
Author: sunilg <su...@apache.org>
Authored: Thu Oct 27 14:45:23 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/abe3db9a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
index 0a5df87..8b5474f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
@@ -86,14 +86,17 @@ export default DS.Model.extend({
}.property("progress"),
finalStatusStyle: function() {
- var style = "default";
var finalStatus = this.get("finalStatus");
+ var style = "";
+
if (finalStatus == "KILLED") {
style = "warning";
} else if (finalStatus == "FAILED") {
style = "danger";
- } else {
+ } else if (finalStatus == "SUCCEEDED") {
style = "success";
+ } else {
+ style = "default";
}
return "label label-" + style;
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[22/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup
code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
deleted file mode 100644
index 447533e..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
- didInsertElement: function() {
- var paging = this.get("paging") ? true : this.get("paging");
- var ordering = this.get("ordering") ? true : this.get("ordering");
- var info = this.get("info") ? true : this.get("info");
- var bFilter = this.get("bFilter") ? true : this.get("bFilter");
-
- // Defines sorter for the columns if not default.
- // Can also specify a custom sorter.
- var i;
- var colDefs = [];
- if (this.get("colTypes")) {
- var typesArr = this.get("colTypes").split(' ');
- var targetsArr = this.get("colTargets").split(' ');
- for (i = 0; i < typesArr.length; i++) {
- console.log(typesArr[i] + " " + targetsArr[i]);
- colDefs.push({
- type: typesArr[i],
- targets: parseInt(targetsArr[i])
- });
- }
- }
- // Defines initial column and sort order.
- var orderArr = [];
- if (this.get("colsOrder")) {
- var cols = this.get("colsOrder").split(' ');
- for (i = 0; i < cols.length; i++) {
- var col = cols[i].split(',');
- if (col.length != 2) {
- continue;
- }
- var order = col[1].trim();
- if (order != 'asc' && order != 'desc') {
- continue;
- }
- var colOrder = [];
- colOrder.push(parseInt(col[0]));
- colOrder.push(order);
- orderArr.push(colOrder);
- }
- }
- if (orderArr.length == 0) {
- var defaultOrder = [0, 'asc'];
- orderArr.push(defaultOrder);
- }
- console.log(orderArr[0]);
- Ember.$('#' + this.get('table-id')).DataTable({
- "paging": paging,
- "ordering": ordering,
- "info": info,
- "bFilter": bFilter,
- "order": orderArr,
- "columnDefs": colDefs
- });
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js
deleted file mode 100644
index fe402bb..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js
+++ /dev/null
@@ -1,250 +0,0 @@
-import Ember from 'ember';
-import Converter from 'yarn-ui/utils/converter';
-
-export default Ember.Component.extend({
- canvas: {
- svg: undefined,
- h: 0,
- w: 0,
- tooltip: undefined
- },
-
- clusterMetrics: undefined,
- modelArr: [],
- colors: d3.scale.category10().range(),
- _selected: undefined,
-
- selected: function() {
- return this._selected;
- }.property(),
-
- tableComponentName: function() {
- return "app-attempt-table";
- }.property(),
-
- setSelected: function(d) {
- if (this._selected == d) {
- return;
- }
-
- // restore color
- if (this._selected) {
- var dom = d3.select("#timeline-bar-" + this._selected.get("id"));
- dom.attr("fill", this.colors[0]);
- }
-
- this._selected = d;
- this.set("selected", d);
- dom = d3.select("#timeline-bar-" + d.get("id"));
- dom.attr("fill", this.colors[1]);
- },
-
- getPerItemHeight: function() {
- var arrSize = this.modelArr.length;
-
- if (arrSize < 20) {
- return 30;
- } else if (arrSize < 100) {
- return 10;
- } else {
- return 2;
- }
- },
-
- getPerItemGap: function() {
- var arrSize = this.modelArr.length;
-
- if (arrSize < 20) {
- return 5;
- } else if (arrSize < 100) {
- return 1;
- } else {
- return 1;
- }
- },
-
- getCanvasHeight: function() {
- return (this.getPerItemHeight() + this.getPerItemGap()) * this.modelArr.length + 200;
- },
-
- draw: function(start, end) {
- // get w/h of the svg
- var bbox = d3.select("#" + this.get("parent-id"))
- .node()
- .getBoundingClientRect();
- this.canvas.w = bbox.width;
- this.canvas.h = this.getCanvasHeight();
-
- this.canvas.svg = d3.select("#" + this.get("parent-id"))
- .append("svg")
- .attr("width", this.canvas.w)
- .attr("height", this.canvas.h)
- .attr("id", this.get("my-id"));
- this.renderTimeline(start, end);
- },
-
- renderTimeline: function(start, end) {
- var border = 30;
- var singleBarHeight = this.getPerItemHeight();
- var gap = this.getPerItemGap();
- var textWidth = 50;
- /*
- start-time end-time
- |--------------------------------------|
- ==============
- ==============
- ==============
- ===============
- */
- var xScaler = d3.scale.linear()
- .domain([start, end])
- .range([0, this.canvas.w - 2 * border - textWidth]);
-
- /*
- * Render frame of timeline view
- */
- this.canvas.svg.append("line")
- .attr("x1", border + textWidth)
- .attr("y1", border - 5)
- .attr("x2", this.canvas.w - border)
- .attr("y2", border - 5)
- .attr("class", "chart");
-
- this.canvas.svg.append("line")
- .attr("x1", border + textWidth)
- .attr("y1", border - 10)
- .attr("x2", border + textWidth)
- .attr("y2", border - 5)
- .attr("class", "chart");
-
- this.canvas.svg.append("line")
- .attr("x1", this.canvas.w - border)
- .attr("y1", border - 10)
- .attr("x2", this.canvas.w - border)
- .attr("y2", border - 5)
- .attr("class", "chart");
-
- this.canvas.svg.append("text")
- .text(Converter.timeStampToDate(start))
- .attr("y", border - 15)
- .attr("x", border + textWidth)
- .attr("class", "bar-chart-text")
- .attr("text-anchor", "left");
-
- this.canvas.svg.append("text")
- .text(Converter.timeStampToDate(end))
- .attr("y", border - 15)
- .attr("x", this.canvas.w - border)
- .attr("class", "bar-chart-text")
- .attr("text-anchor", "end");
-
- // show bar
- var bar = this.canvas.svg.selectAll("bars")
- .data(this.modelArr)
- .enter()
- .append("rect")
- .attr("y", function(d, i) {
- return border + (gap + singleBarHeight) * i;
- })
- .attr("x", function(d, i) {
- return border + textWidth + xScaler(d.get("startTs"));
- })
- .attr("height", singleBarHeight)
- .attr("fill", function(d, i) {
- return this.colors[0];
- }.bind(this))
- .attr("width", function(d, i) {
- var finishedTs = xScaler(d.get("finishedTs"));
- finishedTs = finishedTs > 0 ? finishedTs : xScaler(end);
- return finishedTs - xScaler(d.get("startTs"));
- })
- .attr("id", function(d, i) {
- return "timeline-bar-" + d.get("id");
- });
- bar.on("click", function(d) {
- this.setSelected(d);
- }.bind(this));
-
- this.bindTooltip(bar);
-
- if (this.modelArr.length <= 20) {
- // show bar texts
- for (var i = 0; i < this.modelArr.length; i++) {
- this.canvas.svg.append("text")
- .text(this.modelArr[i].get(this.get("label")))
- .attr("y", border + (gap + singleBarHeight) * i + singleBarHeight / 2)
- .attr("x", border)
- .attr("class", "bar-chart-text");
- }
- }
- },
-
- bindTooltip: function(d) {
- d.on("mouseover", function(d) {
- this.tooltip
- .style("left", (d3.event.pageX) + "px")
- .style("top", (d3.event.pageY - 28) + "px");
- }.bind(this))
- .on("mousemove", function(d) {
- this.tooltip.style("opacity", .9);
- this.tooltip.html(d.get("tooltipLabel"))
- .style("left", (d3.event.pageX) + "px")
- .style("top", (d3.event.pageY - 28) + "px");
- }.bind(this))
- .on("mouseout", function(d) {
- this.tooltip.style("opacity", 0);
- }.bind(this));
- },
-
- initTooltip: function() {
- this.tooltip = d3.select("body")
- .append("div")
- .attr("class", "tooltip")
- .attr("id", "chart-tooltip")
- .style("opacity", 0);
- },
-
- didInsertElement: function() {
- // init tooltip
- this.initTooltip();
-
- // init model
- if (this.get("rmModel")) {
- this.get("rmModel").forEach(function(o) {
- this.modelArr.push(o);
- }.bind(this));
- }
-
- if (this.get("tsModel")) {
- this.get("tsModel").forEach(function(o) {
- this.modelArr.push(o);
- }.bind(this));
- }
-
- this.modelArr.sort(function(a, b) {
- var tsA = a.get("startTs");
- var tsB = b.get("startTs");
-
- return tsA - tsB;
- });
- if (this.modelArr.length > 0) {
- var begin = this.modelArr[0].get("startTs");
- }
- var end = 0;
- for (var i = 0; i < this.modelArr.length; i++) {
- var ts = this.modelArr[i].get("finishedTs");
- if (ts > end) {
- end = ts;
- }
- }
- if (end < begin) {
- end = Date.now();
- }
-
- this.draw(begin, end);
-
- if (this.modelArr.length > 0) {
- this.setSelected(this.modelArr[0]);
- }
- },
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/tree-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/tree-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/tree-selector.js
deleted file mode 100644
index 470deaf..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/tree-selector.js
+++ /dev/null
@@ -1,257 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
- // Map: <queue-name, queue>
- map : undefined,
-
- // Normalized data for d3
- treeData: undefined,
-
- // folded queues, folded[<queue-name>] == true means <queue-name> is folded
- foldedQueues: { },
-
- // maxDepth
- maxDepth: 0,
-
- // num of leaf queue, folded queue is treated as leaf queue
- numOfLeafQueue: 0,
-
- // mainSvg
- mainSvg: undefined,
-
- // Init data
- initData: function() {
- this.map = { };
- this.treeData = { };
- this.maxDepth = 0;
- this.numOfLeafQueue = 0;
-
- this.get("model")
- .forEach(function(o) {
- this.map[o.id] = o;
- }.bind(this));
-
- var selected = this.get("selected");
-
- this.initQueue("root", 1, this.treeData);
- },
-
- // get Children array of given queue
- getChildrenNamesArray: function(q) {
- var namesArr = [];
-
- // Folded queue's children is empty
- if (this.foldedQueues[q.get("name")]) {
- return namesArr;
- }
-
- var names = q.get("children");
- if (names) {
- names.forEach(function(name) {
- namesArr.push(name);
- });
- }
-
- return namesArr;
- },
-
- // Init queues
- initQueue: function(queueName, depth, node) {
- if ((!queueName) || (!this.map[queueName])) {
- // Queue is not existed
- return;
- }
-
- if (depth > this.maxDepth) {
- this.maxDepth = this.maxDepth + 1;
- }
-
- var queue = this.map[queueName];
-
- var names = this.getChildrenNamesArray(queue);
-
- node.name = queueName;
- node.parent = queue.get("parent");
- node.queueData = queue;
-
- if (names.length > 0) {
- node.children = [];
-
- names.forEach(function(name) {
- var childQueueData = {};
- node.children.push(childQueueData);
- this.initQueue(name, depth + 1, childQueueData);
- }.bind(this));
- } else {
- this.numOfLeafQueue = this.numOfLeafQueue + 1;
- }
- },
-
- update: function(source, root, tree, diagonal) {
- var duration = 300;
- var i = 0;
-
- // Compute the new tree layout.
- var nodes = tree.nodes(root).reverse();
- var links = tree.links(nodes);
-
- // Normalize for fixed-depth.
- nodes.forEach(function(d) { d.y = d.depth * 200; });
-
- // Update the nodes\u2026
- var node = this.mainSvg.selectAll("g.node")
- .data(nodes, function(d) { return d.id || (d.id = ++i); });
-
- // Enter any new nodes at the parent's previous position.
- var nodeEnter = node.enter().append("g")
- .attr("class", "node")
- .attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
- .on("click", function(d,i){
- if (d.queueData.get("name") != this.get("selected")) {
- document.location.href = "yarnQueue/" + d.queueData.get("name");
- }
- }.bind(this));
- // .on("click", click);
-
- nodeEnter.append("circle")
- .attr("r", 1e-6)
- .style("fill", function(d) {
- var usedCap = d.queueData.get("usedCapacity");
- if (usedCap <= 60.0) {
- return "LimeGreen";
- } else if (usedCap <= 100.0) {
- return "DarkOrange";
- } else {
- return "LightCoral";
- }
- });
-
- // append percentage
- nodeEnter.append("text")
- .attr("x", function(d) { return 0; })
- .attr("dy", ".35em")
- .attr("text-anchor", function(d) { return "middle"; })
- .text(function(d) {
- var usedCap = d.queueData.get("usedCapacity");
- if (usedCap >= 100.0) {
- return usedCap.toFixed(0) + "%";
- } else {
- return usedCap.toFixed(1) + "%";
- }
- })
- .style("fill-opacity", 1e-6);
-
- // append queue name
- nodeEnter.append("text")
- .attr("x", function(d) { return 40; })
- .attr("dy", ".35em")
- .attr("text-anchor", function(d) { return "start"; })
- .text(function(d) { return d.name; })
- .style("fill-opacity", 1e-6);
-
- // Transition nodes to their new position.
- var nodeUpdate = node.transition()
- .duration(duration)
- .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; });
-
- nodeUpdate.select("circle")
- .attr("r", 20)
- .attr("href",
- function(d) {
- return "yarnQueues/" + d.queueData.get("name");
- })
- .style("stroke", function(d) {
- if (d.queueData.get("name") == this.get("selected")) {
- return "red";
- } else {
- return "gray";
- }
- }.bind(this));
-
- nodeUpdate.selectAll("text")
- .style("fill-opacity", 1);
-
- // Transition exiting nodes to the parent's new position.
- var nodeExit = node.exit().transition()
- .duration(duration)
- .attr("transform", function(d) { return "translate(" + source.y + "," + source.x + ")"; })
- .remove();
-
- nodeExit.select("circle")
- .attr("r", 1e-6);
-
- nodeExit.select("text")
- .style("fill-opacity", 1e-6);
-
- // Update the links\u2026
- var link = this.mainSvg.selectAll("path.link")
- .data(links, function(d) { return d.target.id; });
-
- // Enter any new links at the parent's previous position.
- link.enter().insert("path", "g")
- .attr("class", "link")
- .attr("d", function(d) {
- var o = {x: source.x0, y: source.y0};
- return diagonal({source: o, target: o});
- });
-
- // Transition links to their new position.
- link.transition()
- .duration(duration)
- .attr("d", diagonal);
-
- // Transition exiting nodes to the parent's new position.
- link.exit().transition()
- .duration(duration)
- .attr("d", function(d) {
- var o = {x: source.x, y: source.y};
- return diagonal({source: o, target: o});
- })
- .remove();
-
- // Stash the old positions for transition.
- nodes.forEach(function(d) {
- d.x0 = d.x;
- d.y0 = d.y;
- });
- },
-
- reDraw: function() {
- this.initData();
-
- var margin = {top: 20, right: 120, bottom: 20, left: 120};
- var treeWidth = this.maxDepth * 200;
- var treeHeight = this.numOfLeafQueue * 80;
- var width = treeWidth + margin.left + margin.right;
- var height = treeHeight + margin.top + margin.bottom;
- var layout = { };
-
- if (this.mainSvg) {
- this.mainSvg.remove();
- }
-
- this.mainSvg = d3.select("#" + this.get("parentId")).append("svg")
- .attr("width", width)
- .attr("height", height)
- .attr("class", "tree-selector")
- .append("g")
- .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
-
- var tree = d3.layout.tree().size([treeHeight, treeWidth]);
-
- var diagonal = d3.svg.diagonal()
- .projection(function(d) { return [d.y, d.x]; });
-
- var root = this.treeData;
- root.x0 = height / 2;
- root.y0 = 0;
-
- d3.select(self.frameElement).style("height", height);
-
- this.update(root, root, tree, diagonal);
- },
-
- didInsertElement: function() {
- this.reDraw();
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/config.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/config.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/config.js
deleted file mode 100644
index 224c65a..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/config.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 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.
- */
-
-/**
- * Host and port configurations
- */
-export default {
- RM_HOST: 'localhost',
- RM_PORT: '8088',
- TS_HOST: 'localhost',
- TS_PORT: '8188',
-};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/constants.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/constants.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/constants.js
deleted file mode 100644
index d2937a0..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/constants.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * 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.
- */
-
-/**
- * Application level global constants go here.
- */
-export default {
- PARAM_SEPARATOR: '!',
-};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/.gitkeep
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/application.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/application.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/application.js
deleted file mode 100644
index 3c68365..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/application.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-/**
- * Base controller for application.
- */
-export default Ember.Controller.extend({
- /**
- * Output main top UI menu which is common across all pages.
- * Menu item will be made active based on current path.
- */
- outputMainMenu: function(){
- var path = this.get('currentPath');
- var html = '<li';
- if (path == 'yarnQueue') {
- html = html + ' class="active"';
- }
- html = html + '><a href="yarnQueue/root">Queues<span class="sr-only">' +
- '(current)</span></a></li><li';
- if (path.lastIndexOf('yarnApp', 0) == 0) {
- html = html + ' class="active"';
- }
- html = html + '><a href="yarnApps">Applications<span class="sr-only">' +
- '(current)</span></a></li><li';
- if (path == 'clusterOverview') {
- html = html + ' class="active"';
- }
- html = html + '><a href="clusterOverview">Cluster Overview<span class=' +
- '"sr-only">(current)</span></a></li><li';
- if (path.lastIndexOf('yarnNode', 0) == 0) {
- html = html + ' class="active"';
- }
- html = html + '><a href="yarnNodes">Nodes<span class="sr-only">' +
- '(current)</span></a></li>';
- return Ember.String.htmlSafe(html);
- }.property('currentPath')
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/cluster-overview.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/cluster-overview.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/cluster-overview.js
deleted file mode 100644
index 5c3c825..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/cluster-overview.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
- loading: true,
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-apps.js
deleted file mode 100644
index 55ff9aa..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-apps.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-queue.js
deleted file mode 100644
index b16864e..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-queue.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
- needReload: true,
- selectedQueue: undefined,
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/.gitkeep
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/divide.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/divide.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/divide.js
deleted file mode 100644
index fcf64dd..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/divide.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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.
- */
-import Ember from 'ember';
-
-/**
- * Helper assumes values are numeric. num means numerator and
- * den means denominator.
- */
-export default Ember.Helper.helper(function(params,hash) {
- var num = hash.num;
- var den = hash.den;
- if (den == 0) {
- return 0;
- }
- return Math.floor(num/den);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/log-files-comma.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/log-files-comma.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/log-files-comma.js
deleted file mode 100644
index 8c29b34..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/log-files-comma.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-/**
- * Represent log files as comma separated list.
- */
-export default Ember.Helper.helper(function(params,hash) {
- var logFiles = hash.logFiles;
- if (logFiles == null) {
- return "";
- }
- var logFilesLen = logFiles.length;
- if (logFilesLen == 0) {
- return "";
- }
- var nodeId = hash.nodeId;
- var nodeAddr = hash.nodeAddr;
- var containerId = hash.containerId;
- var html = '<td>';
- var logFilesCommaSeparated = "";
- for (var i = 0; i < logFilesLen; i++) {
- html = html + '<a href="yarnContainerLog/' + nodeId + '/' +
- nodeAddr + '/' + containerId + '/' + logFiles[i] + '">' + logFiles[i] +
- '</a>';
- if (i != logFilesLen - 1) {
- html = html + ",";
- }
- }
- html = html + '</td>';
- return Ember.String.htmlSafe(html);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-link.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-link.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-link.js
deleted file mode 100644
index 99d975b..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-link.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-/**
- * Generate link to node page if its not SHUTDOWN or LOST.
- */
-export default Ember.Helper.helper(function(params,hash) {
- var nodeState = hash.nodeState;
- var nodeHTTPAddress = hash.nodeHTTPAddress;
- var nodeId = hash.nodeId;
- var html = '<td>';
- if (nodeState == "SHUTDOWN" || nodeState == "LOST") {
- html = html + nodeHTTPAddress;
- } else {
- html = html + '<a href="yarnNode/' + nodeId + "/" + nodeHTTPAddress + '">' +
- nodeHTTPAddress + '</a>';
- }
- html = html + '</td>';
- return Ember.String.htmlSafe(html);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-menu.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-menu.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-menu.js
deleted file mode 100644
index 589111f..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-menu.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * 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.
- */
-import Ember from 'ember';
-
-/**
- * Create left hand side node manager menu with menu item activated based
- * on page being accessed.
- */
-export default Ember.Helper.helper(function(params,hash) {
- // Place a menu within a panel inside col-md-2 container.
- var nodeIdSplitAtPort = hash.nodeId;
- var portIndex = nodeIdSplitAtPort.indexOf(':');
- if (portIndex != -1) {
- nodeIdSplitAtPort = nodeIdSplitAtPort.substring(0, portIndex) +
- ':​' + nodeIdSplitAtPort.substring(portIndex + 1);
- }
- var normalizedNodeId = '';
- var splitsAlongDots = nodeIdSplitAtPort.split('.');
- if (splitsAlongDots) {
- var len = splitsAlongDots.length;
- for (var i = 0; i < len; i++) {
- normalizedNodeId = normalizedNodeId + splitsAlongDots[i];
- if (i != len - 1) {
- normalizedNodeId = normalizedNodeId + '.​';
- }
- }
- } else {
- normalizedNodeId = nodeIdSplitAtPort;
- }
-
- var html = '<div class="col-md-2 container-fluid"><div class="panel panel-default">'+
- '<div class="panel-heading"><h4>Node Manager<br>(' + normalizedNodeId + ')</h4></div>'+
- '<div class="panel-body"><ul class="nav nav-pills nav-stacked" id="stacked-menu">' +
- '<ul class="nav nav-pills nav-stacked collapse in"><li';
- if (hash.path == 'yarnNode') {
- html = html + ' class="active"';
- }
- html = html + '><a href="yarnNode/' + hash.nodeId + '/' + hash.nodeAddr +
- '">Node Information</a></li><li';
- if (hash.path == 'yarnNodeApps') {
- html = html + ' class="active"';
- }
- html = html + '><a href="yarnNodeApps/' + hash.nodeId + '/' + hash.nodeAddr +
- '">List of Applications</a></li><li';
- if (hash.path == 'yarnNodeContainers') {
- html = html + ' class="active"';
- }
- html = html + '><a href="yarnNodeContainers/' +hash.nodeId + '/' + hash.nodeAddr +
- '">List of Containers</a></li></ul></ul></div>';
- return Ember.String.htmlSafe(html);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/index.html
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/index.html b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/index.html
deleted file mode 100644
index edc4f2e..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>YarnUi</title>
- <meta name="description" content="">
- <meta name="viewport" content="width=device-width, initial-scale=1">
-
- {{content-for 'head'}}
-
- <link rel="stylesheet" href="assets/vendor.css">
- <link rel="stylesheet" href="assets/yarn-ui.css">
-
- {{content-for 'head-footer'}}
- </head>
- <body>
- {{content-for 'body'}}
-
- <script src="assets/vendor.js"></script>
- <script src="assets/yarn-ui.js"></script>
-
- {{content-for 'body-footer'}}
- </body>
-</html>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/.gitkeep
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-info.js
deleted file mode 100644
index b1f0a88..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-info.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- startedOn: DS.attr('string'),
- state: DS.attr('string'),
- haState: DS.attr('string'),
- rmStateStoreName: DS.attr('string'),
- resourceManagerVersion: DS.attr('string'),
- resourceManagerBuildVersion: DS.attr('string'),
- hadoopVersion: DS.attr('string'),
- hadoopBuildVersion: DS.attr('string'),
- hadoopVersionBuiltOn: DS.attr('string')
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-metric.js
deleted file mode 100644
index 2dd428c..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-metric.js
+++ /dev/null
@@ -1,115 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- appsSubmitted: DS.attr('number'),
- appsCompleted: DS.attr('number'),
- appsPending: DS.attr('number'),
- appsRunning: DS.attr('number'),
- appsFailed: DS.attr('number'),
- appsKilled: DS.attr('number'),
- reservedMB: DS.attr('number'),
- availableMB: DS.attr('number'),
- allocatedMB: DS.attr('number'),
- reservedVirtualCores: DS.attr('number'),
- availableVirtualCores: DS.attr('number'),
- allocatedVirtualCores: DS.attr('number'),
- containersAllocated: DS.attr('number'),
- containersReserved: DS.attr('number'),
- containersPending: DS.attr('number'),
- totalMB: DS.attr('number'),
- totalVirtualCores: DS.attr('number'),
- totalNodes: DS.attr('number'),
- lostNodes: DS.attr('number'),
- unhealthyNodes: DS.attr('number'),
- decommissionedNodes: DS.attr('number'),
- rebootedNodes: DS.attr('number'),
- activeNodes: DS.attr('number'),
-
- getFinishedAppsDataForDonutChart: function() {
- var arr = [];
- arr.push({
- label: "Completed",
- value: this.get("appsCompleted")
- });
- arr.push({
- label: "Killed",
- value: this.get("appsKilled")
- });
- arr.push({
- label: "Failed",
- value: this.get("appsFailed")
- });
-
- return arr;
- }.property("appsCompleted", "appsKilled", "appsFailed"),
-
- getRunningAppsDataForDonutChart: function() {
- var arr = [];
-
- arr.push({
- label: "Pending",
- value: this.get("appsPending")
- });
- arr.push({
- label: "Running",
- value: this.get("appsRunning")
- });
-
- return arr;
- }.property("appsPending", "appsRunning"),
-
- getNodesDataForDonutChart: function() {
- var arr = [];
- arr.push({
- label: "Active",
- value: this.get("activeNodes")
- });
- arr.push({
- label: "Unhealthy",
- value: this.get("unhealthyNodes")
- });
- arr.push({
- label: "Decomissioned",
- value: this.get("decommissionedNodes")
- });
- return arr;
- }.property("activeNodes", "unhealthyNodes", "decommissionedNodes"),
-
- getMemoryDataForDonutChart: function() {
- var type = "MB";
- var arr = [];
- arr.push({
- label: "Allocated",
- value: this.get("allocated" + type)
- });
- arr.push({
- label: "Reserved",
- value: this.get("reserved" + type)
- });
- arr.push({
- label: "Available",
- value: this.get("available" + type)
- });
-
- return arr;
- }.property("allocatedMB", "reservedMB", "availableMB"),
-
- getVCoreDataForDonutChart: function() {
- var type = "VirtualCores";
- var arr = [];
- arr.push({
- label: "Allocated",
- value: this.get("allocated" + type)
- });
- arr.push({
- label: "Reserved",
- value: this.get("reserved" + type)
- });
- arr.push({
- label: "Available",
- value: this.get("available" + type)
- });
-
- return arr;
- }.property("allocatedVirtualCores", "reservedVirtualCores", "availableVirtualCores"),
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app-attempt.js
deleted file mode 100644
index fcb5134..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app-attempt.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-
-export default DS.Model.extend({
- startTime: DS.attr('string'),
- finishedTime: DS.attr('string'),
- containerId: DS.attr('string'),
- nodeHttpAddress: DS.attr('string'),
- nodeId: DS.attr('string'),
- logsLink: DS.attr('string'),
-
- startTs: function() {
- return Converter.dateToTimeStamp(this.get("startTime"));
- }.property("startTime"),
-
- finishedTs: function() {
- var ts = Converter.dateToTimeStamp(this.get("finishedTime"));
- return ts;
- }.property("finishedTime"),
-
- shortAppAttemptId: function() {
- return "attempt_" +
- parseInt(Converter.containerIdToAttemptId(this.get("containerId")).split("_")[3]);
- }.property("containerId"),
-
- elapsedTime: function() {
- var elapsedMs = this.get("finishedTs") - this.get("startTs");
- if (elapsedMs <= 0) {
- elapsedMs = Date.now() - this.get("startTs");
- }
-
- return Converter.msToElapsedTime(elapsedMs);
- }.property(),
-
- tooltipLabel: function() {
- return "<p>Id:" + this.get("id") +
- "</p><p>ElapsedTime:" +
- String(this.get("elapsedTime")) + "</p>";
- }.property(),
-
- link: function() {
- return "/yarnAppAttempt/" + this.get("id");
- }.property(),
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
deleted file mode 100644
index fec2bd3..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import Converter from 'yarn-ui/utils/converter';
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- appName: DS.attr('string'),
- user: DS.attr('string'),
- queue: DS.attr('string'),
- state: DS.attr('string'),
- startTime: DS.attr('string'),
- elapsedTime: DS.attr('string'),
- finalStatus: DS.attr('string'),
- finishedTime: DS.attr('finishedTime'),
- progress: DS.attr('number'),
- diagnostics: DS.attr('string'),
- amContainerLogs: DS.attr('string'),
- amHostHttpAddress: DS.attr('string'),
- logAggregationStatus: DS.attr('string'),
- unmanagedApplication: DS.attr('string'),
- amNodeLabelExpression: DS.attr('string'),
- applicationTags: DS.attr('string'),
- priority: DS.attr('number'),
- allocatedMB: DS.attr('number'),
- allocatedVCores: DS.attr('number'),
- runningContainers: DS.attr('number'),
- memorySeconds: DS.attr('number'),
- vcoreSeconds: DS.attr('number'),
- preemptedResourceMB: DS.attr('number'),
- preemptedResourceVCores: DS.attr('number'),
- numNonAMContainerPreempted: DS.attr('number'),
- numAMContainerPreempted: DS.attr('number'),
-
- isFailed: function() {
- return this.get('finalStatus') == "FAILED"
- }.property("finalStatus"),
-
- allocatedResource: function() {
- return Converter.resourceToString(this.get("allocatedMB"), this.get("allocatedVCores"));
- }.property("allocatedMB", "allocatedVCores"),
-
- preemptedResource: function() {
- return Converter.resourceToString(this.get("preemptedResourceMB"), this.get("preemptedResourceVCores"));
- }.property("preemptedResourceMB", "preemptedResourceVCores"),
-
- aggregatedResourceUsage: function() {
- return Converter.resourceToString(this.get("memorySeconds"), this.get("vcoreSeconds")) + " (� Secs)";
- }.property("memorySeconds", "vcoreSeconds"),
-
- progressStyle: function() {
- return "width: " + this.get("progress") + "%";
- }.property("progress"),
-
- finalStatusStyle: function() {
- var style = "default";
- var finalStatus = this.get("finalStatus");
- if (finalStatus == "KILLED") {
- style = "warning";
- } else if (finalStatus == "FAILED") {
- style = "danger";
- } else {
- style = "success";
- }
-
- return "label label-" + style;
- }.property("finalStatus")
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container-log.js
deleted file mode 100644
index 31cf61e..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container-log.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- logs: DS.attr('string'),
- containerID: DS.attr('string'),
- logFileName: DS.attr('string')
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container.js
deleted file mode 100644
index f7977be..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-
-export default DS.Model.extend({
- allocatedMB: DS.attr('number'),
- allocatedVCores: DS.attr('number'),
- assignedNodeId: DS.attr('string'),
- priority: DS.attr('number'),
- startedTime: DS.attr('number'),
- finishedTime: DS.attr('number'),
- logUrl: DS.attr('string'),
- containerExitStatus: DS.attr('number'),
- containerState: DS.attr('string'),
- nodeHttpAddress: DS.attr('string'),
-
- startTs: function() {
- return Converter.dateToTimeStamp(this.get("startedTime"));
- }.property("startedTime"),
-
- finishedTs: function() {
- var ts = Converter.dateToTimeStamp(this.get("finishedTime"));
- return ts;
- }.property("finishedTime"),
-
- elapsedTime: function() {
- var elapsedMs = this.get("finishedTs") - this.get("startTs");
- if (elapsedMs <= 0) {
- elapsedMs = Date.now() - this.get("startTs");
- }
-
- return Converter.msToElapsedTime(elapsedMs);
- }.property(),
-
- tooltipLabel: function() {
- return "<p>Id:" + this.get("id") +
- "</p><p>ElapsedTime:" +
- String(this.get("elapsedTime")) + "</p>";
- }.property(),
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-app.js
deleted file mode 100644
index 6dc69ae..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-app.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- appId: DS.attr('string'),
- state: DS.attr('string'),
- user: DS.attr('string'),
- containers: DS.attr('array'),
- /**
- * Indicates no rows were retrieved from backend
- */
- isDummyApp: function() {
- return this.get('id') == "dummy";
- }.property("id"),
-
- appStateStyle: function() {
- var style = "default";
- var appState = this.get("state");
- if (appState == "RUNNING" || appState == "FINISHING_CONTAINERS_WAIT" ||
- appState == "APPLICATION_RESOURCES_CLEANINGUP") {
- style = "primary";
- } else if (appState == "FINISHED") {
- style = "success";
- }
- return "label label-" + style;
- }.property("state")
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-container.js
deleted file mode 100644
index 3ba3216..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-container.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- containerId: DS.attr('string'),
- state: DS.attr('string'),
- user: DS.attr('string'),
- exitCode: DS.attr('string'),
- diagnostics: DS.attr('string'),
- totalMemoryNeeded: DS.attr('number'),
- totalVCoresNeeded: DS.attr('number'),
- containerLogFiles: DS.attr('array'),
-
- /**
- * Indicates that there was no container retrieved from backend.
- */
- isDummyContainer: function() {
- return this.get('id') == "dummy";
- }.property("id"),
-
- containerStateStyle: function() {
- var style = "primary";
- var containerState = this.get('state');
- var containerExitCode = this.get('exitCode');
- if (containerState == "DONE") {
- if (containerExitCode == "0") {
- style = "success";
- } else if (containerExitCode != "N/A") {
- style = "danger";
- }
- }
- if (containerState == "EXITED_WITH_SUCCESS") {
- style = "success";
- }
- if (containerState == "EXITED_WITH_FAILURE") {
- style = "danger";
- }
- return "label label-" + style;
- }.property("state", "exitCode")
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node.js
deleted file mode 100644
index 4753983..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- totalVmemAllocatedContainersMB: DS.attr('number'),
- totalPmemAllocatedContainersMB: DS.attr('number'),
- totalVCoresAllocatedContainers: DS.attr('number'),
- vmemCheckEnabled: DS.attr('boolean'),
- pmemCheckEnabled: DS.attr('boolean'),
- nodeHealthy: DS.attr('boolean'),
- lastNodeUpdateTime: DS.attr('string'),
- healthReport: DS.attr('string'),
- nmStartupTime: DS.attr('string'),
- nodeManagerBuildVersion: DS.attr('string'),
- hadoopBuildVersion: DS.attr('string'),
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-queue.js
deleted file mode 100644
index 5b91d70..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-queue.js
+++ /dev/null
@@ -1,76 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- name: DS.attr('string'),
- children: DS.attr('array'),
- parent: DS.attr('string'),
- capacity: DS.attr('number'),
- maxCapacity: DS.attr('number'),
- usedCapacity: DS.attr('number'),
- absCapacity: DS.attr('number'),
- absMaxCapacity: DS.attr('number'),
- absUsedCapacity: DS.attr('number'),
- state: DS.attr('string'),
- userLimit: DS.attr('number'),
- userLimitFactor: DS.attr('number'),
- preemptionDisabled: DS.attr('number'),
- numPendingApplications: DS.attr('number'),
- numActiveApplications: DS.attr('number'),
- users: DS.hasMany('YarnUser'),
-
- isLeafQueue: function() {
- var len = this.get("children.length");
- if (!len) {
- return true;
- }
- return len <= 0;
- }.property("children"),
-
- capacitiesBarChartData: function() {
- return [
- {
- label: "Absolute Capacity",
- value: this.get("name") == "root" ? 100 : this.get("absCapacity")
- },
- {
- label: "Absolute Used",
- value: this.get("name") == "root" ? this.get("usedCapacity") : this.get("absUsedCapacity")
- },
- {
- label: "Absolute Max Capacity",
- value: this.get("name") == "root" ? 100 : this.get("absMaxCapacity")
- }
- ]
- }.property("absCapacity", "absUsedCapacity", "absMaxCapacity"),
-
- userUsagesDonutChartData: function() {
- var data = [];
- if (this.get("users")) {
- this.get("users").forEach(function(o) {
- data.push({
- label: o.get("name"),
- value: o.get("usedMemoryMB")
- })
- });
- }
-
- return data;
- }.property("users"),
-
- hasUserUsages: function() {
- return this.get("userUsagesDonutChartData").length > 0;
- }.property(),
-
- numOfApplicationsDonutChartData: function() {
- return [
- {
- label: "Pending Apps",
- value: this.get("numPendingApplications") || 0 // TODO, fix the REST API so root will return #applications as well.
- },
- {
- label: "Active Apps",
- value: this.get("numActiveApplications") || 0
- }
- ]
- }.property(),
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-rm-node.js
deleted file mode 100644
index 9a1082c..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-rm-node.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- rack: DS.attr('string'),
- state: DS.attr('string'),
- nodeHostName: DS.attr('string'),
- nodeHTTPAddress: DS.attr('string'),
- lastHealthUpdate: DS.attr('string'),
- healthReport: DS.attr('string'),
- numContainers: DS.attr('number'),
- usedMemoryMB: DS.attr('number'),
- availMemoryMB: DS.attr('number'),
- usedVirtualCores: DS.attr('number'),
- availableVirtualCores: DS.attr('number'),
- version: DS.attr('string'),
- nodeLabels: DS.attr('array'),
-
- nodeLabelsAsString: function() {
- var labels = this.get("nodeLabels");
- var labelToReturn = "";
- // Only one label per node supported.
- if (labels && labels.length > 0) {
- labelToReturn = labels[0];
- }
- return labelToReturn;
- }.property("nodeLabels"),
-
- /**
- * Indicates no rows were retrieved from backend
- */
- isDummyNode: function() {
- return this.get('id') == "dummy";
- }.property("id"),
-
- nodeStateStyle: function() {
- var style = "default";
- var nodeState = this.get("state");
- if (nodeState == "REBOOTED") {
- style = "warning";
- } else if (nodeState == "UNHEALTHY" || nodeState == "DECOMMISSIONED" ||
- nodeState == "LOST" || nodeState == "SHUTDOWN") {
- style = "danger";
- } else if (nodeState == "RUNNING") {
- style = "success";
- }
- return "label label-" + style;
- }.property("state"),
-
- getMemoryDataForDonutChart: function() {
- var arr = [];
- arr.push({
- label: "Used",
- value: this.get("usedMemoryMB")
- });
- arr.push({
- label: "Available",
- value: this.get("availMemoryMB")
- });
- return arr;
- }.property("availMemoryMB", "usedMemoryMB"),
-
- getVCoreDataForDonutChart: function() {
- var arr = [];
- arr.push({
- label: "Used",
- value: this.get("usedVirtualCores")
- });
- arr.push({
- label: "Available",
- value: this.get("availableVirtualCores")
- });
- return arr;
- }.property("availableVirtualCores", "usedVirtualCores"),
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-user.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-user.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-user.js
deleted file mode 100644
index 6e9c03c..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-user.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.Model.extend({
- name: DS.attr('string'),
- queueName: DS.attr('string'),
- usedMemoryMB: DS.attr('number'),
- usedVCore: DS.attr('number')
-})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
deleted file mode 100644
index 5db083e..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import Ember from 'ember';
-import config from './config/environment';
-
-var Router = Ember.Router.extend({
- location: config.locationType
-});
-
-Router.map(function() {
- this.route('yarnApps');
- this.route('yarnNodes');
- this.route('yarnNode', { path: '/yarnNode/:node_id/:node_addr' });
- this.route('yarnNodeApps', { path: '/yarnNodeApps/:node_id/:node_addr' });
- this.route('yarnNodeApp',
- { path: '/yarnNodeApp/:node_id/:node_addr/:app_id' });
- this.route('yarnNodeContainers',
- { path: '/yarnNodeContainers/:node_id/:node_addr' });
- this.route('yarnNodeContainer',
- { path: '/yarnNodeContainer/:node_id/:node_addr/:container_id' });
- this.route('yarnContainerLog', { path:
- '/yarnContainerLog/:node_id/:node_addr/:container_id/:filename' });
- this.route('yarnQueue', { path: '/yarnQueue/:queue_name' });
- this.route('clusterOverview');
- this.route('yarnApp', { path: '/yarnApp/:app_id' });
- this.route('yarnAppAttempt', { path: '/yarnAppAttempt/:app_attempt_id'});
- this.route('error');
- this.route('notfound', { path: '*:' });
-});
-
-export default Router;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/.gitkeep
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/application.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/application.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/application.js
deleted file mode 100644
index b7a5754..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/application.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- actions: {
- /**
- * Base error handler for the application.
- * If specific routes do not handle the error, it will bubble up to
- * this handler. Here we redirect to either 404 page or a generic
- * error handler page.
- */
- error: function (error) {
- if (error && error.errors[0] &&
- error.errors[0].status == 404) {
- this.intermediateTransitionTo('/notfound');
- } else {
- this.intermediateTransitionTo('/error');
- }
- }
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/cluster-overview.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/cluster-overview.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/cluster-overview.js
deleted file mode 100644
index 4ba5dcd..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/cluster-overview.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model() {
- return this.store.findAll('ClusterMetric');
- },
-
- afterModel() {
- this.controllerFor("ClusterOverview").set("loading", false);
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/index.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/index.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/index.js
deleted file mode 100644
index b228ff4..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- /**
- * Redirect root URL to cluster overview page.
- */
- beforeModel: function() {
- this.replaceWith('clusterOverview');
- }
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app-attempt.js
deleted file mode 100644
index 3b6adc7..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app-attempt.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model(param) {
- return Ember.RSVP.hash({
- attempt: this.store.findRecord('yarnAppAttempt', param.app_attempt_id),
-
- rmContainers: this.store.query('yarnContainer',
- {
- app_attempt_id: param.app_attempt_id,
- is_rm: true
- }),
-
- tsContainers: this.store.query('yarnContainer',
- {
- app_attempt_id: param.app_attempt_id,
- is_rm: false
- }),
- });
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app.js
deleted file mode 100644
index 03092aa..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model(param) {
- return Ember.RSVP.hash({
- app: this.store.find('yarnApp', param.app_id),
- attempts: this.store.query('yarnAppAttempt', { appId: param.app_id})
- });
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
deleted file mode 100644
index 2787f5b..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model() {
- var apps = this.store.findAll('yarnApp');
- return apps;
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-container-log.js
deleted file mode 100644
index c324025..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-container-log.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-import Constants from 'yarn-ui/constants';
-
-export default Ember.Route.extend({
- model(param) {
- var id = param.node_addr + Constants.PARAM_SEPARATOR + param.container_id +
- Constants.PARAM_SEPARATOR + param.filename;
- return Ember.RSVP.hash({
- containerLog: this.store.findRecord('yarnContainerLog', id),
- nodeInfo: { id: param.node_id, addr: param.node_addr }
- }).then(function(hash) {
- // Just return as its success.
- return hash;
- }, function(reason) {
- if (reason.errors && reason.errors[0]) {
- // This means HTTP error response was sent by adapter.
- return reason;
- } else {
- // Assume empty response received from server.
- return { nodeInfo: { id: param.node_id, addr: param.node_addr },
- containerLog: { logs: "", containerID: param.container_id,
- logFileName: param.filename}};
- }
- });
- },
-
- afterModel(model) {
- // Handle errors and redirect if promise is rejected.
- if (model.errors && model.errors[0]) {
- if (model.errors[0].status == 404) {
- this.replaceWith('/notfound');
- } else {
- this.replaceWith('/error');
- }
- }
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-app.js
deleted file mode 100644
index 63b1f2a..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-app.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model(param) {
- return Ember.RSVP.hash({
- nodeApp: this.store.queryRecord('yarnNodeApp',
- { nodeAddr : param.node_addr, appId: param.app_id }),
- nodeInfo: { id: param.node_id, addr: param.node_addr }
- });
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-apps.js
deleted file mode 100644
index ffb5b7b..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-apps.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model(param) {
- // Get all apps running on a specific node. Node is contacted by using node_addr.
- return Ember.RSVP.hash({
- apps: this.store.query('yarnNodeApp', { nodeAddr: param.node_addr }),
- nodeInfo: { id: param.node_id, addr: param.node_addr }
- });
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-container.js
deleted file mode 100644
index 2022662..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-container.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model(param) {
- // Get a specific container running on a specific node.
- return Ember.RSVP.hash({
- nodeContainer: this.store.queryRecord('yarnNodeContainer',
- { nodeHttpAddr: param.node_addr, containerId: param.container_id }),
- nodeInfo: { id: param.node_id, addr: param.node_addr }
- });
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-containers.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-containers.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-containers.js
deleted file mode 100644
index 9a69729..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-containers.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * 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.
- */
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model(param) {
- // Get all containers running on specific node.
- return Ember.RSVP.hash({
- containers: this.store.query('yarnNodeContainer', { nodeHttpAddr: param.node_addr }),
- nodeInfo: { id: param.node_id, addr: param.node_addr }
- });
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node.js
deleted file mode 100644
index 7c58b94..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model(param) {
- // Fetches data from both NM and RM. RM is queried to get node usage info.
- return Ember.RSVP.hash({
- node: this.store.findRecord('yarnNode', param.node_addr),
- rmNode: this.store.findRecord('yarnRmNode', param.node_id)
- });
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-nodes.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-nodes.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-nodes.js
deleted file mode 100644
index f33eef8..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-nodes.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model() {
- return this.store.findAll('yarnRmNode');
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queue.js
deleted file mode 100644
index 9396bac..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queue.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model(param) {
- return Ember.RSVP.hash({
- selected : param.queue_name,
- queues: this.store.findAll('yarnQueue'),
- selectedQueue : undefined,
- apps: undefined, // apps of selected queue
- });
- },
-
- afterModel(model) {
- model.selectedQueue = this.store.peekRecord('yarnQueue', model.selected);
- model.apps = this.store.findAll('yarnApp');
- model.apps.forEach(function(o) {
- console.log(o);
- })
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/index.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/index.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/index.js
deleted file mode 100644
index 9be90b1..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default Ember.Route.extend({
- beforeModel() {
- this.transitionTo('yarnQueues.root');
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/queues-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/queues-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/queues-selector.js
deleted file mode 100644
index 0f6c572..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/queues-selector.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Route.extend({
- model() {
- return this.store.findAll('yarnQueue');
- },
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-info.js
deleted file mode 100644
index cc936cb..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-info.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.JSONAPISerializer.extend({
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- var fixedPayload = {
- id: id,
- type: primaryModelClass.modelName,
- attributes: payload
- };
-
- return this._super(store, primaryModelClass, fixedPayload, id,
- requestType);
- },
-
- normalizeArrayResponse(store, primaryModelClass, payload, id,
- requestType) {
- // return expected is { data: [ {}, {} ] }
- var normalizedArrayResponse = {};
-
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = [
- this.normalizeSingleResponse(store, primaryModelClass,
- payload.clusterInfo, payload.clusterInfo.id, requestType)
- ];
- return normalizedArrayResponse;
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-metric.js
deleted file mode 100644
index d39885e..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-metric.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.JSONAPISerializer.extend({
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- var fixedPayload = {
- id: id,
- type: primaryModelClass.modelName,
- attributes: payload
- };
-
- return this._super(store, primaryModelClass, fixedPayload, id,
- requestType);
- },
-
- normalizeArrayResponse(store, primaryModelClass, payload, id,
- requestType) {
- // return expected is { data: [ {}, {} ] }
- var normalizedArrayResponse = {};
-
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = [
- this.normalizeSingleResponse(store, primaryModelClass,
- payload.clusterMetrics, 1, requestType)
- ];
- return normalizedArrayResponse;
- }
-});
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[43/50] [abbrv] hadoop git commit: YARN-4849. Addendum patch to fix
document. (Wangda Tan via Sunil G)
Posted by su...@apache.org.
YARN-4849. Addendum patch to fix document. (Wangda Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2a6c1b59
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2a6c1b59
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2a6c1b59
Branch: refs/heads/YARN-3368
Commit: 2a6c1b5916ae6a06e1d56ba718dd82b5ef453fc9
Parents: 083faf7
Author: sunilg <su...@apache.org>
Authored: Wed Aug 24 16:10:19 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
BUILDING.txt | 2 +-
.../src/site/markdown/YarnUI2.md | 36 +++++++++++---------
2 files changed, 21 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a6c1b59/BUILDING.txt
----------------------------------------------------------------------
diff --git a/BUILDING.txt b/BUILDING.txt
index 527e5cf..bf6122b 100644
--- a/BUILDING.txt
+++ b/BUILDING.txt
@@ -130,7 +130,7 @@ Maven build goals:
* Use -Psrc to create a project source TAR.GZ
* Use -Dtar to create a TAR with the distribution (using -Pdist)
* Use -Preleasedocs to include the changelog and release docs (requires Internet connectivity)
- * Use -Pyarn-ui to build YARN UI v2. (Requires Internet connectivity, and it is for dev use only)
+ * Use -Pyarn-ui to build YARN UI v2. (Requires Internet connectivity)
Snappy build options:
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a6c1b59/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
index 575ebc7..ff48183 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
@@ -17,27 +17,31 @@
Hadoop: YARN-UI V2
=================
-*This is a WIP project, nobody should use it in production.*
Prerequisites
-------------
-You will need the following things properly installed on your computer.
+If you run RM locally in your computer for test purpose, you need the following things properly installed.
-* Install Node.js with NPM: https://nodejs.org/download/
-* After Node.js installed, install bower: `npm install -g bower`.
-* Install Ember-cli: `npm install -g ember-cli`
+- Install Node.js with NPM: https://nodejs.org/download
+- After Node.js installed, install `corsproxy`: `npm install -g corsproxy`.
-BUILD
-----
-* Please refer to BUILDING.txt in the top directory and pass -Pyarn-ui to build UI-related code
-* Execute `mvn test -Pyarn-ui` to run unit tests
-Try it
-------
+Configurations
+-------------
+
+*In yarn-site.xml*
+
+| Configuration Property | Description |
+|:---- |:---- |
+| `yarn.resourcemanager.webapp.ui2.enable` | In the server side it indicates whether the new YARN-UI v2 is enabled or not. Defaults to `false`. |
+| `yarn.resourcemanager.webapp.ui2.address` | Specify the address of ResourceManager and port which host YARN-UI v2, defaults to `localhost:8288`. |
-* Packaging and deploying Hadoop in this branch
-* In `hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js`, change `timelineWebUrl` and `rmWebUrl` to your YARN RM/Timeline server web address.
-* If you are running YARN RM in your localhost, you should update `localBaseUrl` to `localhost:1337/`, install `npm install -g corsproxy` and run `corsproxy` to avoid CORS errors. More details: `https://www.npmjs.com/package/corsproxy`.
-* Run `ember serve` under `hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/`
-* Visit your app at [http://localhost:4200](http://localhost:4200).
+*In $HADOOP_PREFIX/share/hadoop/yarn/webapps/rm/config/configs.env*
+
+- Update timelineWebAddress and rmWebAddress to the actual addresses run resource manager and timeline server
+- If you run RM locally in you computer just for test purpose, you need to keep `corsproxy` running. Otherwise, you need to set `localBaseAddress` to empty.
+
+Use it
+-------------
+Open your browser, go to `rm-address:8288` and try it!
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[05/50] [abbrv] hadoop git commit: YARN-5794. Fix the asflicense
warnings. Contributed by Yiqun Lin
Posted by su...@apache.org.
YARN-5794. Fix the asflicense warnings. Contributed by Yiqun Lin
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/3de13025
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/3de13025
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/3de13025
Branch: refs/heads/YARN-3368
Commit: 3de130252dd81b45b051f8aa01d281983ca7e541
Parents: 8fa2195
Author: Naganarasimha <na...@apache.org>
Authored: Fri Oct 28 12:37:37 2016 +0530
Committer: Naganarasimha <na...@apache.org>
Committed: Fri Oct 28 12:37:37 2016 +0530
----------------------------------------------------------------------
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/3de13025/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml
index f1be098..b2d3f32 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml
@@ -228,6 +228,10 @@
<exclude>src/main/resources/webapps/static/dt-1.9.4/css/jui-dt.css</exclude>
<exclude>src/main/resources/webapps/static/dt-1.9.4/css/demo_table.css</exclude>
<exclude>src/main/resources/webapps/static/dt-1.9.4/images/Sorting icons.psd</exclude>
+ <exclude>src/main/resources/webapps/static/dt-1.9.4/js/jquery.dataTables.min.js</exclude>
+ <exclude>src/main/resources/webapps/static/jt/jquery.jstree.js</exclude>
+ <exclude>src/main/resources/webapps/static/jquery/jquery-ui-1.9.1.custom.min.js</exclude>
+ <exclude>src/main/resources/webapps/static/jquery/jquery-1.8.2.min.js</exclude>
<exclude>src/main/resources/webapps/static/jquery/themes-1.9.1/base/jquery-ui.css</exclude>
<exclude>src/test/resources/application_1440536969523_0001.har/_index</exclude>
<exclude>src/test/resources/application_1440536969523_0001.har/part-0</exclude>
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[03/50] [abbrv] hadoop git commit: HDFS-11064. Mention the default NN
rpc ports in hdfs-default.xml. Contributed by Yiqun Lin.
Posted by su...@apache.org.
HDFS-11064. Mention the default NN rpc ports in hdfs-default.xml. Contributed by Yiqun Lin.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/57187fdb
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/57187fdb
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/57187fdb
Branch: refs/heads/YARN-3368
Commit: 57187fdb93c8f59372c980eb3d86073a3c8045b9
Parents: b62bc2b
Author: Xiao Chen <xi...@apache.org>
Authored: Thu Oct 27 18:13:06 2016 -0700
Committer: Xiao Chen <xi...@apache.org>
Committed: Thu Oct 27 18:13:06 2016 -0700
----------------------------------------------------------------------
.../hadoop-hdfs/src/main/resources/hdfs-default.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/57187fdb/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml b/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml
index 061d078..e28dc54 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml
@@ -37,7 +37,7 @@
RPC address that handles all clients requests. In the case of HA/Federation where multiple namenodes exist,
the name service id is added to the name e.g. dfs.namenode.rpc-address.ns1
dfs.namenode.rpc-address.EXAMPLENAMESERVICE
- The value of this property will take the form of nn-host1:rpc-port.
+ The value of this property will take the form of nn-host1:rpc-port. The NameNode's default RPC port is 9820.
</description>
</property>
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[31/50] [abbrv] hadoop git commit: YARN-5772. [YARN-3368] Replace old
Hadoop logo with new one (Akhil P B Tan via Sunil G)
Posted by su...@apache.org.
YARN-5772. [YARN-3368] Replace old Hadoop logo with new one (Akhil P B Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6ec6a010
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6ec6a010
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6ec6a010
Branch: refs/heads/YARN-3368
Commit: 6ec6a010de86c2919692f6cdb0de71bfe99eb24f
Parents: b596534
Author: sunilg <su...@apache.org>
Authored: Thu Oct 27 10:45:47 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../webapp/public/assets/images/hadoop_logo.png | Bin 26495 -> 31716 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6ec6a010/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/hadoop_logo.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/hadoop_logo.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/hadoop_logo.png
index 275d39e..d481395 100644
Binary files a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/hadoop_logo.png and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/hadoop_logo.png differ
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[08/50] [abbrv] hadoop git commit: YARN-4517. Add nodes page and fix
bunch of license issues. (Varun Saxena via wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-app-test.js
new file mode 100644
index 0000000..21a715c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-app-test.js
@@ -0,0 +1,102 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('serializer:yarn-node-app', 'Unit | Serializer | NodeApp', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+ assert.ok(serializer.normalizeArrayResponse);
+ assert.ok(serializer.internalNormalizeSingleResponse);
+});
+
+test('normalizeArrayResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-app"
+ },
+ payload = {
+ apps: {
+ app: [{
+ id:"application_1456251210105_0001", state:"FINISHED", user:"root"
+ },{
+ id:"application_1456251210105_0002", state:"RUNNING",user:"root",
+ containerids:["container_e38_1456251210105_0002_01_000001",
+ "container_e38_1456251210105_0002_01_000002"]
+ }]
+ }
+ };
+ assert.expect(15);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 2);
+ assert.equal(response.data[0].attributes.containers, undefined);
+ assert.equal(response.data[1].attributes.containers.length, 2);
+ assert.deepEqual(response.data[1].attributes.containers,
+ payload.apps.app[1].containerids);
+ for (var i = 0; i < 2; i++) {
+ assert.equal(response.data[i].type, modelClass.modelName);
+ assert.equal(response.data[i].id, payload.apps.app[i].id);
+ assert.equal(response.data[i].attributes.appId, payload.apps.app[i].id);
+ assert.equal(response.data[i].attributes.state, payload.apps.app[i].state);
+ assert.equal(response.data[i].attributes.user, payload.apps.app[i].user);
+ }
+});
+
+test('normalizeArrayResponse no apps test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-app"
+ },
+ payload = { apps: null };
+ assert.expect(5);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 1);
+ assert.equal(response.data[0].type, modelClass.modelName);
+ assert.equal(response.data[0].id, "dummy");
+ assert.equal(response.data[0].attributes.appId, undefined);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-app"
+ },
+ payload = {
+ app: {id:"application_1456251210105_0001", state:"FINISHED", user:"root"}
+ };
+ assert.expect(7);
+ var response =
+ serializer.normalizeSingleResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(payload.app.id, response.data.id);
+ assert.equal(modelClass.modelName, response.data.type);
+ assert.equal(payload.app.id, response.data.attributes.appId);
+ assert.equal(payload.app.state, response.data.attributes.state);
+ assert.equal(payload.app.user, response.data.attributes.user);
+ assert.equal(response.data.attributes.containers, undefined);
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-container-test.js
new file mode 100644
index 0000000..1f08467
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-container-test.js
@@ -0,0 +1,128 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('serializer:yarn-node-container', 'Unit | Serializer | NodeContainer', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+ assert.ok(serializer.normalizeArrayResponse);
+ assert.ok(serializer.internalNormalizeSingleResponse);
+});
+
+test('normalizeArrayResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-container"
+ },
+ payload = {
+ containers: {
+ container: [{
+ id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
+ exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
+ totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
+ "containerlogs/container_e32_1456000363780_0002_01_000001/root",
+ nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
+ "stdout"]
+ },{
+ id:"container_e32_1456000363780_0002_01_000003", state:"RUNNING",
+ exitCode:-1000, diagnostics:"", user:"root", totalMemoryNeededMB:1024,
+ totalVCoresNeeded:1,containerLogsLink:"http://localhost:8042/node" +
+ "/containerlogs/container_e32_1456000363780_0002_01_000003/root",
+ nodeId:"localhost:64318",containerLogFiles:["syslog","stderr",
+ "syslog.shuffle","stdout"]
+ }]
+ }
+ };
+ assert.expect(14);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 2);
+ assert.equal(response.data[0].id,
+ "container_e32_1456000363780_0002_01_000001");
+ assert.equal(response.data[1].id,
+ "container_e32_1456000363780_0002_01_000003");
+ assert.equal(response.data[0].attributes.containerLogFiles.length, 3);
+ assert.equal(response.data[1].attributes.containerLogFiles.length, 4);
+ for (var i = 0; i < 2; i++) {
+ assert.equal(response.data[i].type, modelClass.modelName);
+ assert.deepEqual(response.data[i].attributes.containerLogFiles,
+ payload.containers.container[i].containerLogFiles);
+ assert.equal(response.data[i].attributes.state,
+ payload.containers.container[i].state);
+ assert.equal(response.data[i].attributes.user,
+ payload.containers.container[i].user);
+ }
+});
+
+test('normalizeArrayResponse no containers test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-container"
+ },
+ payload = { containers: null };
+ assert.expect(5);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 1);
+ assert.equal(response.data[0].type, modelClass.modelName);
+ assert.equal(response.data[0].id, "dummy");
+ assert.equal(response.data[0].attributes.containerId, undefined);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-container"
+ },
+ payload = {
+ container: {
+ id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
+ exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
+ totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
+ "containerlogs/container_e32_1456000363780_0002_01_000001/root",
+ nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
+ "stdout"]
+ }
+ };
+ assert.expect(11);
+ var response =
+ serializer.normalizeSingleResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.id, payload.container.id);
+ assert.equal(response.data.type, modelClass.modelName);
+ assert.equal(response.data.attributes.containerId, payload.container.id);
+ assert.equal(response.data.attributes.state, payload.container.state);
+ assert.equal(response.data.attributes.user, payload.container.user);
+ assert.equal(response.data.attributes.exitCode, payload.container.exitCode);
+ assert.equal(response.data.attributes.totalMemoryNeededMB,
+ payload.container.totalMemoryNeeded);
+ assert.equal(response.data.attributes.totalVCoresNeeded,
+ payload.container.totalVCoresNeeded);
+ assert.equal(response.data.attributes.containerLogFiles.length, 3);
+ assert.deepEqual(response.data.attributes.containerLogFiles,
+ payload.container.containerLogFiles);
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-test.js
new file mode 100644
index 0000000..0e76ccb
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-test.js
@@ -0,0 +1,69 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Converter from 'yarn-ui/utils/converter';
+
+moduleFor('serializer:yarn-node', 'Unit | Serializer | Node', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+ assert.ok(serializer.internalNormalizeSingleResponse);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node"
+ },
+ payload = {
+ nodeInfo: {
+ healthReport: "Healthy", totalVmemAllocatedContainersMB: 344064,
+ totalPmemAllocatedContainersMB: 163840,
+ totalVCoresAllocatedContainers: 160,
+ vmemCheckEnabled: true, pmemCheckEnabled: true,
+ lastNodeUpdateTime: 1456250210310, nodeHealthy: true,
+ nodeManagerVersion: "3.0.0-SNAPSHOT",
+ nodeManagerBuildVersion: "3.0.0-SNAPSHOT",
+ nodeManagerVersionBuiltOn: "2000-01-01T00:00Z",
+ hadoopVersion: "3.0.0-SNAPSHOT",
+ hadoopBuildVersion: "3.0.0-SNAPSHOT",
+ hadoopVersionBuiltOn: "2000-01-01T00:00Z",
+ id: "localhost:64318", nodeHostName: "192.168.0.102",
+ nmStartupTime: 1456250208231
+ }
+ };
+ assert.expect(6);
+ var id = "localhost:64318";
+ var response = serializer.normalizeSingleResponse({}, modelClass, payload, id, null);
+ assert.equal(response.data.id, id);
+ assert.equal(response.data.type, modelClass.modelName);
+ assert.equal(response.data.attributes.totalVmemAllocatedContainersMB,
+ payload.nodeInfo.totalVmemAllocatedContainersMB);
+ assert.equal(response.data.attributes.totalPmemAllocatedContainersMB,
+ payload.nodeInfo.totalPmemAllocatedContainersMB);
+ assert.equal(response.data.attributes.totalVCoresAllocatedContainers,
+ payload.nodeInfo.totalVCoresAllocatedContainers);
+ assert.equal(response.data.attributes.nmStartupTime,
+ Converter.timeStampToDate(payload.nodeInfo.nmStartupTime));
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-rm-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-rm-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-rm-node-test.js
new file mode 100644
index 0000000..bc6397d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-rm-node-test.js
@@ -0,0 +1,153 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('serializer:yarn-rm-node', 'Unit | Serializer | RMNode', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+ assert.ok(serializer.normalizeArrayResponse);
+ assert.ok(serializer.internalNormalizeSingleResponse);
+});
+
+test('normalizeArrayResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-rm-node"
+ },
+ payload = {
+ nodes: {
+ node: [{
+ rack: "/default-rack", state: "RUNNING", id: "192.168.1.1:64318",
+ nodeHostName: "192.168.1.1", nodeHTTPAddress: "192.168.1.1:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 2048,
+ availMemoryMB: 161792, usedVirtualCores: 2,
+ availableVirtualCores: 158, nodeLabels: ["x"],
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }
+ },{
+ rack: "/default-rack", state: "RUNNING", id: "192.168.1.2:64318",
+ nodeHostName: "192.168.1.2", nodeHTTPAddress: "192.168.1.2:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 0,
+ availMemoryMB: 163840, usedVirtualCores: 0,
+ availableVirtualCores: 160, nodeLabels: ["y"],
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }
+ }]
+ }
+ };
+ assert.expect(12);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 2);
+ assert.equal(response.data[0].id, "192.168.1.1:64318");
+ assert.equal(response.data[1].id, "192.168.1.2:64318");
+ for (var i = 0; i < 2; i++) {
+ assert.equal(response.data[i].type, modelClass.modelName);
+ assert.equal(response.data[i].attributes.nodeHostName,
+ payload.nodes.node[i].nodeHostName);
+ assert.equal(response.data[i].attributes.nodeHTTPAddress,
+ payload.nodes.node[i].nodeHTTPAddress);
+ assert.deepEqual(response.data[i].attributes.nodeLabels,
+ payload.nodes.node[i].nodeLabels);
+ }
+});
+
+test('normalizeArrayResponse no nodes test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-rm-node"
+ },
+ payload = { nodes: null };
+ assert.expect(5);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ console.log(response);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 1);
+ assert.equal(response.data[0].type, modelClass.modelName);
+ assert.equal(response.data[0].id, "dummy");
+ assert.equal(response.data[0].attributes.nodeHostName, undefined);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-rm-node"
+ },
+ payload = {
+ node: {
+ rack: "/default-rack", state: "RUNNING", id: "192.168.1.1:64318",
+ nodeHostName: "192.168.1.1", nodeHTTPAddress: "192.168.1.1:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 2048,
+ availMemoryMB: 161792, usedVirtualCores: 2,
+ availableVirtualCores: 158, nodeLabels: ["x"],
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }
+ }
+ };
+ assert.expect(13);
+ var id = "localhost:64318";
+ var response =
+ serializer.normalizeSingleResponse({}, modelClass, payload, id, null);
+ assert.ok(response.data);
+ assert.equal(response.data.id, id);
+ assert.equal(response.data.type, modelClass.modelName);
+ assert.equal(response.data.attributes.rack, payload.node.rack);
+ assert.equal(response.data.attributes.state, payload.node.state);
+ assert.equal(response.data.attributes.nodeHostName,
+ payload.node.nodeHostName);
+ assert.equal(response.data.attributes.nodeHTTPAddress,
+ payload.node.nodeHTTPAddress);
+ assert.equal(response.data.attributes.version, payload.node.version);
+ assert.equal(response.data.attributes.availMemoryMB,
+ payload.node.availMemoryMB);
+ assert.equal(response.data.attributes.usedMemoryMB,
+ payload.node.usedMemoryMB);
+ assert.equal(response.data.attributes.availableVirtualCores,
+ payload.node.availableVirtualCores);
+ assert.equal(response.data.attributes.usedVirtualCores,
+ payload.node.usedVirtualCores);
+ assert.deepEqual(response.data.attributes.nodeLabels,
+ payload.node.nodeLabels);
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
index 55cf71d..481537d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
@@ -1,10 +1,52 @@
+/**
+ * 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.
+ */
+
import converter from '../../../utils/converter';
import { module, test } from 'qunit';
-module('Unit | Utility | converter');
+module('Unit | Utility | Converter');
// Replace this with your real tests.
test('it works', function(assert) {
- var result = converter();
- assert.ok(result);
+ assert.ok(converter);
+ assert.ok(converter.splitForContainerLogs);
+});
+
+test('split for container logs', function(assert) {
+ var id = "localhost:64318!container_e32_1456000363780_0002_01_000001!" +
+ "syslog";
+ var arr = converter.splitForContainerLogs(id);
+ assert.ok(arr);
+ assert.deepEqual(arr, ["localhost:64318",
+ "container_e32_1456000363780_0002_01_000001", "syslog"]);
+ id = "localhost:64318!container_e32_1456000363780_0002_01_000001!" +
+ "syslog!logs";
+ arr = converter.splitForContainerLogs(id);
+ assert.ok(arr);
+ assert.deepEqual(arr, ["localhost:64318",
+ "container_e32_1456000363780_0002_01_000001", "syslog!logs"]);
+ id = "localhost:64318!container_e32_1456000363780_0002_01_000001";
+ arr = converter.splitForContainerLogs(id);
+ assert.notOk(arr);
+ id = null;
+ arr = converter.splitForContainerLogs(id);
+ assert.notOk(arr);
+ id = undefined;
+ arr = converter.splitForContainerLogs(id);
+ assert.notOk(arr);
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/sorter-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/sorter-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/sorter-test.js
new file mode 100644
index 0000000..8f17380
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/sorter-test.js
@@ -0,0 +1,26 @@
+/**
+ * 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.
+ */
+
+import Sorter from 'yarn-ui/utils/sorter';
+import { module, test } from 'qunit';
+
+module('Unit | Utility | Sorter');
+
+test('Basic creation test', function(assert) {
+ assert.ok(Sorter);
+});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[07/50] [abbrv] hadoop git commit: YARN-4849. Addendum patch to fix
ASF warnings. (Wangda Tan via Sunil G)
Posted by su...@apache.org.
YARN-4849. Addendum patch to fix ASF warnings. (Wangda Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e18e6a35
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e18e6a35
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e18e6a35
Branch: refs/heads/YARN-3368
Commit: e18e6a35940a8cdfed88187ea431604da7b4365e
Parents: d6be1e6
Author: sunilg <su...@apache.org>
Authored: Wed Aug 31 23:43:02 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../assets/images/datatables/Sorting icons.psd | Bin 27490 -> 0 bytes
.../public/assets/images/datatables/favicon.ico | Bin 894 -> 0 bytes
.../public/assets/images/datatables/sort_asc.png | Bin 160 -> 0 bytes
.../assets/images/datatables/sort_asc_disabled.png | Bin 148 -> 0 bytes
.../public/assets/images/datatables/sort_both.png | Bin 201 -> 0 bytes
.../public/assets/images/datatables/sort_desc.png | Bin 158 -> 0 bytes
.../images/datatables/sort_desc_disabled.png | Bin 146 -> 0 bytes
7 files changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e18e6a35/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/Sorting icons.psd
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/Sorting icons.psd b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/Sorting icons.psd
deleted file mode 100644
index 53b2e06..0000000
Binary files a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/Sorting icons.psd and /dev/null differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e18e6a35/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/favicon.ico
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/favicon.ico b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/favicon.ico
deleted file mode 100644
index 6eeaa2a..0000000
Binary files a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/favicon.ico and /dev/null differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e18e6a35/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc.png
deleted file mode 100644
index e1ba61a..0000000
Binary files a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e18e6a35/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc_disabled.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc_disabled.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc_disabled.png
deleted file mode 100644
index fb11dfe..0000000
Binary files a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc_disabled.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e18e6a35/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_both.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_both.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_both.png
deleted file mode 100644
index af5bc7c..0000000
Binary files a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_both.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e18e6a35/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc.png
deleted file mode 100644
index 0e156de..0000000
Binary files a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e18e6a35/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc_disabled.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc_disabled.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc_disabled.png
deleted file mode 100644
index c9fdd8a..0000000
Binary files a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc_disabled.png and /dev/null differ
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[04/50] [abbrv] hadoop git commit: HDFS-10926. Update staled
configuration properties related to erasure coding. Contributed by Sammi Chen
Posted by su...@apache.org.
HDFS-10926. Update staled configuration properties related to erasure coding. Contributed by Sammi Chen
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/8fa21956
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/8fa21956
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/8fa21956
Branch: refs/heads/YARN-3368
Commit: 8fa219569762048345d69d15e325c0917361ff66
Parents: 57187fd
Author: Kai Zheng <ka...@intel.com>
Authored: Fri Oct 28 12:37:30 2016 +0600
Committer: Kai Zheng <ka...@intel.com>
Committed: Fri Oct 28 12:37:30 2016 +0600
----------------------------------------------------------------------
.../hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8fa21956/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md b/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md
index 9119b1e..dbd1f44 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md
@@ -106,9 +106,10 @@ Deployment
Erasure coding background recovery work on the DataNodes can also be tuned via the following configuration parameters:
- 1. `dfs.datanode.stripedread.timeout.millis` - Timeout for striped reads. Default value is 5000 ms.
- 1. `dfs.datanode.stripedread.threads` - Number of concurrent reader threads. Default value is 20 threads.
- 1. `dfs.datanode.stripedread.buffer.size` - Buffer size for reader service. Default value is 256KB.
+ 1. `dfs.datanode.ec.reconstruction.stripedread.timeout.millis` - Timeout for striped reads. Default value is 5000 ms.
+ 1. `dfs.datanode.ec.reconstruction.stripedread.threads` - Number of concurrent reader threads. Default value is 20 threads.
+ 1. `dfs.datanode.ec.reconstruction.stripedread.buffer.size` - Buffer size for reader service. Default value is 64KB.
+ 1. `dfs.datanode.ec.reconstruction.stripedblock.threads.size` - Number of threads used by the Datanode for background reconstruction work. Default value is 8 threads.
### Enable Intel ISA-L
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[44/50] [abbrv] hadoop git commit: YARN-5488. [YARN-3368]
Applications table overflows beyond the page boundary(Harish Jaiprakash via
Sunil G)
Posted by su...@apache.org.
YARN-5488. [YARN-3368] Applications table overflows beyond the page boundary(Harish Jaiprakash via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/083faf74
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/083faf74
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/083faf74
Branch: refs/heads/YARN-3368
Commit: 083faf74ab8e8df4fe0e2668607e5d41fa6a30fe
Parents: e7b55f2
Author: sunilg <su...@apache.org>
Authored: Fri Aug 12 14:51:03 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../src/main/webapp/app/styles/app.css | 4 +
.../src/main/webapp/app/templates/yarn-app.hbs | 98 ++++++++++----------
2 files changed, 54 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/083faf74/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
index a68a0ac..da5b4bf 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
@@ -273,3 +273,7 @@ li a.navigation-link.ember-view {
right: 20px;
top: 3px;
}
+
+.x-scroll {
+ overflow-x: scroll;
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/083faf74/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
index 49c4bfd..9e92fc1 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
@@ -49,55 +49,57 @@
<div class="col-md-12 container-fluid">
<div class="panel panel-default">
<div class="panel-heading">Basic Info</div>
- <table class="display table table-striped table-bordered"
- cellspacing="0" width="100%">
- <thead>
- <tr>
- <th>Application ID</th>
- <th>Name</th>
- <th>User</th>
- <th>Queue</th>
- <th>State</th>
- <th>Final Status</th>
- <th>Start Time</th>
- <th>Elapsed Time</th>
- <th>Finished Time</th>
- <th>Priority</th>
- <th>Progress</th>
- <th>Is Unmanaged AM</th>
- </tr>
- </thead>
+ <div class="x-scroll">
+ <table class="display table table-striped table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Application ID</th>
+ <th>Name</th>
+ <th>User</th>
+ <th>Queue</th>
+ <th>State</th>
+ <th>Final Status</th>
+ <th>Start Time</th>
+ <th>Elapsed Time</th>
+ <th>Finished Time</th>
+ <th>Priority</th>
+ <th>Progress</th>
+ <th>Is Unmanaged AM</th>
+ </tr>
+ </thead>
- <tbody>
- <tr>
- <td>{{model.app.id}}</td>
- <td>{{model.app.appName}}</td>
- <td>{{model.app.user}}</td>
- <td>{{model.app.queue}}</td>
- <td>{{model.app.state}}</td>
- <td>
- <span class={{model.app.finalStatusStyle}}>
- {{model.app.finalStatus}}
- </span>
- </td>
- <td>{{model.app.startTime}}</td>
- <td>{{model.app.elapsedTime}}</td>
- <td>{{model.app.validatedFinishedTs}}</td>
- <td>{{model.app.priority}}</td>
- <td>
- <div class="progress" style="margin-bottom: 0;">
- <div class="progress-bar" role="progressbar"
- aria-valuenow="60" aria-valuemin="0"
- aria-valuemax="100"
- style={{model.app.progressStyle}}>
- {{model.app.progress}}%
+ <tbody>
+ <tr>
+ <td>{{model.app.id}}</td>
+ <td>{{model.app.appName}}</td>
+ <td>{{model.app.user}}</td>
+ <td>{{model.app.queue}}</td>
+ <td>{{model.app.state}}</td>
+ <td>
+ <span class={{model.app.finalStatusStyle}}>
+ {{model.app.finalStatus}}
+ </span>
+ </td>
+ <td>{{model.app.startTime}}</td>
+ <td>{{model.app.elapsedTime}}</td>
+ <td>{{model.app.validatedFinishedTs}}</td>
+ <td>{{model.app.priority}}</td>
+ <td>
+ <div class="progress" style="margin-bottom: 0;">
+ <div class="progress-bar" role="progressbar"
+ aria-valuenow="60" aria-valuemin="0"
+ aria-valuemax="100"
+ style={{model.app.progressStyle}}>
+ {{model.app.progress}}%
+ </div>
</div>
- </div>
- </td>
- <td>{{model.app.unmanagedApplication}}</td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td>{{model.app.unmanagedApplication}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</div>
</div>
</div>
@@ -248,4 +250,4 @@
</div>
</div>
{{/if}}
-{{outlet}}
\ No newline at end of file
+{{outlet}}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[34/50] [abbrv] hadoop git commit: YARN-4849. Addendum patch to
remove unwanted files from rat exclusions. (Wangda Tan via Sunil G)
Posted by su...@apache.org.
YARN-4849. Addendum patch to remove unwanted files from rat exclusions. (Wangda Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b5cb6113
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b5cb6113
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b5cb6113
Branch: refs/heads/YARN-3368
Commit: b5cb6113ed21e8ce294378cf641e57077858f436
Parents: a99d885
Author: sunilg <su...@apache.org>
Authored: Fri Oct 14 18:23:04 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn/hadoop-yarn-ui/pom.xml | 14 --------
.../src/main/webapp/.editorconfig | 34 --------------------
2 files changed, 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b5cb6113/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
index 440aca9..b427713 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
@@ -46,32 +46,18 @@
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<excludes>
- <exclude>src/main/webapp/node_modules/**/*</exclude>
- <exclude>src/main/webapp/bower_components/**/*</exclude>
<exclude>src/main/webapp/jsconfig.json</exclude>
<exclude>src/main/webapp/bower.json</exclude>
<exclude>src/main/webapp/package.json</exclude>
<exclude>src/main/webapp/testem.json</exclude>
-
- <exclude>src/main/webapp/dist/**/*</exclude>
- <exclude>src/main/webapp/tmp/**/*</exclude>
<exclude>src/main/webapp/public/assets/images/**/*</exclude>
<exclude>src/main/webapp/public/assets/images/*</exclude>
<exclude>src/main/webapp/public/robots.txt</exclude>
-
- <exclude>public/assets/images/**/*</exclude>
<exclude>public/crossdomain.xml</exclude>
-
- <exclude>src/main/webapp/.tmp/**/*</exclude>
<exclude>src/main/webapp/.bowerrc</exclude>
- <exclude>src/main/webapp/.editorconfig</exclude>
<exclude>src/main/webapp/.ember-cli</exclude>
- <exclude>src/main/webapp/.gitignore</exclude>
<exclude>src/main/webapp/.jshintrc</exclude>
- <exclude>src/main/webapp/.travis.yml</exclude>
<exclude>src/main/webapp/.watchmanconfig</exclude>
- <exclude>src/main/webapp/tests/.jshintrc</exclude>
- <exclude>src/main/webapp/blueprints/.jshintrc</exclude>
</excludes>
</configuration>
</plugin>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b5cb6113/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.editorconfig
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.editorconfig b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.editorconfig
deleted file mode 100644
index 47c5438..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.editorconfig
+++ /dev/null
@@ -1,34 +0,0 @@
-# EditorConfig helps developers define and maintain consistent
-# coding styles between different editors and IDEs
-# editorconfig.org
-
-root = true
-
-
-[*]
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-indent_style = space
-indent_size = 2
-
-[*.js]
-indent_style = space
-indent_size = 2
-
-[*.hbs]
-insert_final_newline = false
-indent_style = space
-indent_size = 2
-
-[*.css]
-indent_style = space
-indent_size = 2
-
-[*.html]
-indent_style = space
-indent_size = 2
-
-[*.{diff,md}]
-trim_trailing_whitespace = false
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[16/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup
code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-container-log-test.js
new file mode 100644
index 0000000..4e68da0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-container-log-test.js
@@ -0,0 +1,120 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Constants from 'yarn-ui/constants';
+
+moduleFor('route:yarn-container-log', 'Unit | Route | ContainerLog', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting container log', function(assert) {
+ var response = {
+ logs: "This is syslog",
+ containerID: "container_e32_1456000363780_0002_01_000001",
+ logFileName: "syslog"};
+ var store = {
+ findRecord: function(type) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response);
+ }
+ )}
+ };
+ assert.expect(6);
+ var route = this.subject();
+ route.set('store', store);
+ var model = route.model({node_id: "localhost:64318",
+ node_addr: "localhost:8042",
+ container_id: "container_e32_1456000363780_0002_01_000001",
+ filename: "syslog"});
+ model.then(function(value) {
+ assert.ok(value);
+ assert.ok(value.containerLog);
+ assert.deepEqual(value.containerLog, response);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ });
+});
+
+/**
+ * This can happen when an empty response is sent from server
+ */
+test('Test non HTTP error while getting container log', function(assert) {
+ var error = {};
+ var response = {
+ logs: "",
+ containerID: "container_e32_1456000363780_0002_01_000001",
+ logFileName: "syslog"};
+ var store = {
+ findRecord: function(type) {
+ return new Ember.RSVP.Promise(function(resolve, reject) {
+ reject(error);
+ }
+ )}
+ };
+ assert.expect(6);
+ var route = this.subject();
+ route.set('store', store);
+ var model = route.model({node_id: "localhost:64318",
+ node_addr: "localhost:8042",
+ container_id: "container_e32_1456000363780_0002_01_000001",
+ filename: "syslog"});
+ model.then(function(value) {
+ assert.ok(value);
+ assert.ok(value.containerLog);
+ assert.deepEqual(value.containerLog, response);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ });
+});
+
+test('Test HTTP error while getting container log', function(assert) {
+ var error = {errors: [{status: 404, responseText: 'Not Found'}]};
+ var response = {
+ logs: "",
+ containerID: "container_e32_1456000363780_0002_01_000001",
+ logFileName: "syslog"};
+ var store = {
+ findRecord: function(type) {
+ return new Ember.RSVP.Promise(function(resolve, reject) {
+ reject(error);
+ }
+ )}
+ };
+ assert.expect(5);
+ var route = this.subject();
+ route.set('store', store);
+ var model = route.model({node_id: "localhost:64318",
+ node_addr: "localhost:8042",
+ container_id: "container_e32_1456000363780_0002_01_000001",
+ filename: "syslog"});
+ model.then(function(value) {
+ assert.ok(value);
+ assert.ok(value.errors);
+ assert.equal(value.errors.length, 1);
+ assert.equal(value.errors[0].status, 404);
+ assert.equal(value.errors[0].responseText, 'Not Found');
+ });
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-app-test.js
new file mode 100644
index 0000000..8e5acf9
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-app-test.js
@@ -0,0 +1,56 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-node-app', 'Unit | Route | NodeApp', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting specific app on a node', function(assert) {
+ var response =
+ {id:"application_1456251210105_0001", state:"FINISHED", user:"root"};
+ var store = {
+ queryRecord: function(type, query) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response);
+ });
+ }
+ };
+ assert.expect(6);
+ var route = this.subject();
+ route.set('store', store);
+ var model =
+ route.model({node_id:"localhost:64318", node_addr:"localhost:8042",
+ app_id:"application_1456251210105_0001"}).
+ then(
+ function(value){
+ assert.ok(value);
+ assert.ok(value.nodeApp);
+ assert.deepEqual(value.nodeApp, response);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ }
+ );
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-apps-test.js
new file mode 100644
index 0000000..44d9995
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-apps-test.js
@@ -0,0 +1,60 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-node-apps', 'Unit | Route | NodeApps', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting apps on a node', function(assert) {
+ var response = [
+ {id:"application_1456251210105_0001", state:"FINISHED", user:"root"},
+ {id:"application_1456251210105_0002", state:"RUNNING",user:"root",
+ containerids:["container_e38_1456251210105_0002_01_000001",
+ "container_e38_1456251210105_0002_01_000002"]}];
+ var store = {
+ query: function(type, query) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response.slice());
+ });
+ }
+ };
+ assert.expect(8);
+ var route = this.subject();
+ route.set('store', store);
+ var model =
+ route.model({node_id:"localhost:64318", node_addr:"localhost:8042"}).
+ then(
+ function(value){
+ assert.ok(value);
+ assert.ok(value.apps);
+ assert.equal(value.apps.length, 2);
+ assert.deepEqual(response[0], value.apps[0]);
+ assert.deepEqual(response[1], value.apps[1]);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ }
+ );
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-container-test.js
new file mode 100644
index 0000000..f0b68fc
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-container-test.js
@@ -0,0 +1,61 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-node-container', 'Unit | Route | NodeContainer', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting specific container on a node', function(assert) {
+ var response =
+ {id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
+ exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
+ totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
+ "containerlogs/container_e32_1456000363780_0002_01_000001/root",
+ nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
+ "stdout"]};
+ var store = {
+ queryRecord: function(type, query) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response);
+ });
+ }
+ };
+ assert.expect(6);
+ var route = this.subject();
+ route.set('store', store);
+ var model =
+ route.model({node_id:"localhost:64318", node_addr:"localhost:8042",
+ container_id:"container_e32_1456000363780_0002_01_000001"}).
+ then(
+ function(value){
+ assert.ok(value);
+ assert.ok(value.nodeContainer);
+ assert.deepEqual(value.nodeContainer, response);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ }
+ );
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-containers-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-containers-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-containers-test.js
new file mode 100644
index 0000000..8359713
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-containers-test.js
@@ -0,0 +1,68 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-node-containers', 'Unit | Route | NodeContainers', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting apps on a node', function(assert) {
+ var response =
+ [{id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
+ exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
+ totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
+ "containerlogs/container_e32_1456000363780_0002_01_000001/root",
+ nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
+ "stdout"]},
+ {id:"container_e32_1456000363780_0002_01_000003", state:"RUNNING",
+ exitCode:-1000, diagnostics:"", user:"root", totalMemoryNeededMB:1024,
+ totalVCoresNeeded:1,containerLogsLink:"http://localhost:8042/node" +
+ "/containerlogs/container_e32_1456000363780_0002_01_000003/root",
+ nodeId:"localhost:64318",containerLogFiles:["syslog","stderr",
+ "syslog.shuffle","stdout"]}];
+ var store = {
+ query: function(type, query) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response.slice());
+ });
+ }
+ };
+ assert.expect(8);
+ var route = this.subject();
+ route.set('store', store);
+ var model =
+ route.model({node_id:"localhost:64318", node_addr:"localhost:8042"}).
+ then(
+ function(value){
+ assert.ok(value);
+ assert.ok(value.containers);
+ assert.equal(value.containers.length, 2);
+ assert.deepEqual(value.containers[0], response[0]);
+ assert.deepEqual(value.containers[1], response[1]);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ }
+ );
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-test.js
new file mode 100644
index 0000000..4e82f1b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-node-test.js
@@ -0,0 +1,84 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Ember from 'ember';
+
+moduleFor('route:yarn-node', 'Unit | Route | Node', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting a node', function(assert) {
+ var nodeResponse =
+ {healthReport: "Healthy", totalVmemAllocatedContainersMB: 344064,
+ totalPmemAllocatedContainersMB: 163840,
+ totalVCoresAllocatedContainers: 160,
+ vmemCheckEnabled: true, pmemCheckEnabled: true,
+ lastNodeUpdateTime: 1456250210310, nodeHealthy: true,
+ nodeManagerVersion: "3.0.0-SNAPSHOT",
+ nodeManagerBuildVersion: "3.0.0-SNAPSHOT",
+ nodeManagerVersionBuiltOn: "2000-01-01T00:00Z",
+ hadoopVersion: "3.0.0-SNAPSHOT",
+ hadoopBuildVersion: "3.0.0-SNAPSHOT",
+ hadoopVersionBuiltOn: "2000-01-01T00:00Z",
+ id: "localhost:64318", nodeHostName: "192.168.0.102",
+ nmStartupTime: 1456250208231};
+ var rmNodeResponse =
+ {rack: "/default-rack", state: "RUNNING", id: "localhost:64318",
+ nodeHostName: "localhost", nodeHTTPAddress: "localhost:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 0,
+ availMemoryMB: 163840, usedVirtualCores: 0,
+ availableVirtualCores: 160,
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }};
+
+ // Create store which returns appropriate responses.
+ var store = {
+ findRecord: function(type) {
+ if (type == 'yarnNode') {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(nodeResponse);
+ });
+ } else if (type == 'yarnRmNode') {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(rmNodeResponse);
+ });
+ }
+ }
+ };
+ var route = this.subject();
+ assert.expect(4);
+ route.set('store', store);
+ var model = route.model(
+ {node_addr:"localhost:8042", node_id:"localhost:64318"})._result;
+ assert.ok(model.node);
+ assert.deepEqual(model.node, nodeResponse);
+ assert.ok(model.rmNode);
+ assert.deepEqual(model.rmNode, rmNodeResponse);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-nodes-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-nodes-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-nodes-test.js
new file mode 100644
index 0000000..baa5bd6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-nodes-test.js
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Ember from 'ember';
+
+moduleFor('route:yarn-nodes', 'Unit | Route | Nodes', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting nodes', function(assert) {
+ var response = [{
+ rack: "/default-rack", state: "RUNNING", id: "192.168.1.1:64318",
+ nodeHostName: "192.168.1.1", nodeHTTPAddress: "192.168.1.1:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 0,
+ availMemoryMB: 163840, usedVirtualCores: 0,
+ availableVirtualCores: 160,
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }},
+ {rack: "/default-rack", state: "RUNNING", id: "192.168.1.2:64318",
+ nodeHostName: "192.168.1.2", nodeHTTPAddress: "192.168.1.2:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 0,
+ availMemoryMB: 163840, usedVirtualCores: 0,
+ availableVirtualCores: 160,
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }}];
+ var store = {
+ findAll: function(type) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response);
+ });
+ }
+ };
+ var route = this.subject();
+ route.set('store', store);
+ var model = route.model()._result;
+ assert.expect(4);
+ assert.ok(model);
+ assert.equal(model.length, 2);
+ assert.deepEqual(response[0], model[0]);
+ assert.deepEqual(response[1], model[1]);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-app-test.js
new file mode 100644
index 0000000..4158612
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-app-test.js
@@ -0,0 +1,33 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-app', 'Unit | Serializer | yarn app', {
+ // Specify the other units that are required for this test.
+ needs: ['serializer:yarn-app']
+});
+
+// Replace this with your real tests.
+test('it serializes records', function(assert) {
+ var record = this.subject();
+
+ var serializedRecord = record.serialize();
+
+ assert.ok(serializedRecord);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-container-log-test.js
new file mode 100644
index 0000000..2349dc2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-container-log-test.js
@@ -0,0 +1,49 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('serializer:yarn-container-log', 'Unit | Serializer | ContainerLog', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-container-log"
+ },
+ payload = "This is syslog";
+ var id = "localhost:64318!container_e32_1456000363780_0002_01_000001!syslog";
+ assert.expect(6);
+ var response =
+ serializer.normalizeSingleResponse({}, modelClass, payload, id, null);
+ assert.ok(response.data);
+ assert.equal(response.data.id, id);
+ assert.equal(response.data.type, modelClass.modelName);
+ assert.equal(response.data.attributes.logs, payload);
+ assert.equal(response.data.attributes.containerID,
+ "container_e32_1456000363780_0002_01_000001");
+ assert.equal(response.data.attributes.logFileName, "syslog");
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-app-test.js
new file mode 100644
index 0000000..21a715c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-app-test.js
@@ -0,0 +1,102 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('serializer:yarn-node-app', 'Unit | Serializer | NodeApp', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+ assert.ok(serializer.normalizeArrayResponse);
+ assert.ok(serializer.internalNormalizeSingleResponse);
+});
+
+test('normalizeArrayResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-app"
+ },
+ payload = {
+ apps: {
+ app: [{
+ id:"application_1456251210105_0001", state:"FINISHED", user:"root"
+ },{
+ id:"application_1456251210105_0002", state:"RUNNING",user:"root",
+ containerids:["container_e38_1456251210105_0002_01_000001",
+ "container_e38_1456251210105_0002_01_000002"]
+ }]
+ }
+ };
+ assert.expect(15);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 2);
+ assert.equal(response.data[0].attributes.containers, undefined);
+ assert.equal(response.data[1].attributes.containers.length, 2);
+ assert.deepEqual(response.data[1].attributes.containers,
+ payload.apps.app[1].containerids);
+ for (var i = 0; i < 2; i++) {
+ assert.equal(response.data[i].type, modelClass.modelName);
+ assert.equal(response.data[i].id, payload.apps.app[i].id);
+ assert.equal(response.data[i].attributes.appId, payload.apps.app[i].id);
+ assert.equal(response.data[i].attributes.state, payload.apps.app[i].state);
+ assert.equal(response.data[i].attributes.user, payload.apps.app[i].user);
+ }
+});
+
+test('normalizeArrayResponse no apps test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-app"
+ },
+ payload = { apps: null };
+ assert.expect(5);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 1);
+ assert.equal(response.data[0].type, modelClass.modelName);
+ assert.equal(response.data[0].id, "dummy");
+ assert.equal(response.data[0].attributes.appId, undefined);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-app"
+ },
+ payload = {
+ app: {id:"application_1456251210105_0001", state:"FINISHED", user:"root"}
+ };
+ assert.expect(7);
+ var response =
+ serializer.normalizeSingleResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(payload.app.id, response.data.id);
+ assert.equal(modelClass.modelName, response.data.type);
+ assert.equal(payload.app.id, response.data.attributes.appId);
+ assert.equal(payload.app.state, response.data.attributes.state);
+ assert.equal(payload.app.user, response.data.attributes.user);
+ assert.equal(response.data.attributes.containers, undefined);
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-container-test.js
new file mode 100644
index 0000000..1f08467
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-container-test.js
@@ -0,0 +1,128 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('serializer:yarn-node-container', 'Unit | Serializer | NodeContainer', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+ assert.ok(serializer.normalizeArrayResponse);
+ assert.ok(serializer.internalNormalizeSingleResponse);
+});
+
+test('normalizeArrayResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-container"
+ },
+ payload = {
+ containers: {
+ container: [{
+ id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
+ exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
+ totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
+ "containerlogs/container_e32_1456000363780_0002_01_000001/root",
+ nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
+ "stdout"]
+ },{
+ id:"container_e32_1456000363780_0002_01_000003", state:"RUNNING",
+ exitCode:-1000, diagnostics:"", user:"root", totalMemoryNeededMB:1024,
+ totalVCoresNeeded:1,containerLogsLink:"http://localhost:8042/node" +
+ "/containerlogs/container_e32_1456000363780_0002_01_000003/root",
+ nodeId:"localhost:64318",containerLogFiles:["syslog","stderr",
+ "syslog.shuffle","stdout"]
+ }]
+ }
+ };
+ assert.expect(14);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 2);
+ assert.equal(response.data[0].id,
+ "container_e32_1456000363780_0002_01_000001");
+ assert.equal(response.data[1].id,
+ "container_e32_1456000363780_0002_01_000003");
+ assert.equal(response.data[0].attributes.containerLogFiles.length, 3);
+ assert.equal(response.data[1].attributes.containerLogFiles.length, 4);
+ for (var i = 0; i < 2; i++) {
+ assert.equal(response.data[i].type, modelClass.modelName);
+ assert.deepEqual(response.data[i].attributes.containerLogFiles,
+ payload.containers.container[i].containerLogFiles);
+ assert.equal(response.data[i].attributes.state,
+ payload.containers.container[i].state);
+ assert.equal(response.data[i].attributes.user,
+ payload.containers.container[i].user);
+ }
+});
+
+test('normalizeArrayResponse no containers test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-container"
+ },
+ payload = { containers: null };
+ assert.expect(5);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 1);
+ assert.equal(response.data[0].type, modelClass.modelName);
+ assert.equal(response.data[0].id, "dummy");
+ assert.equal(response.data[0].attributes.containerId, undefined);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node-container"
+ },
+ payload = {
+ container: {
+ id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
+ exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
+ totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
+ "containerlogs/container_e32_1456000363780_0002_01_000001/root",
+ nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
+ "stdout"]
+ }
+ };
+ assert.expect(11);
+ var response =
+ serializer.normalizeSingleResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.id, payload.container.id);
+ assert.equal(response.data.type, modelClass.modelName);
+ assert.equal(response.data.attributes.containerId, payload.container.id);
+ assert.equal(response.data.attributes.state, payload.container.state);
+ assert.equal(response.data.attributes.user, payload.container.user);
+ assert.equal(response.data.attributes.exitCode, payload.container.exitCode);
+ assert.equal(response.data.attributes.totalMemoryNeededMB,
+ payload.container.totalMemoryNeeded);
+ assert.equal(response.data.attributes.totalVCoresNeeded,
+ payload.container.totalVCoresNeeded);
+ assert.equal(response.data.attributes.containerLogFiles.length, 3);
+ assert.deepEqual(response.data.attributes.containerLogFiles,
+ payload.container.containerLogFiles);
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-test.js
new file mode 100644
index 0000000..0e76ccb
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-node-test.js
@@ -0,0 +1,69 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Converter from 'yarn-ui/utils/converter';
+
+moduleFor('serializer:yarn-node', 'Unit | Serializer | Node', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+ assert.ok(serializer.internalNormalizeSingleResponse);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-node"
+ },
+ payload = {
+ nodeInfo: {
+ healthReport: "Healthy", totalVmemAllocatedContainersMB: 344064,
+ totalPmemAllocatedContainersMB: 163840,
+ totalVCoresAllocatedContainers: 160,
+ vmemCheckEnabled: true, pmemCheckEnabled: true,
+ lastNodeUpdateTime: 1456250210310, nodeHealthy: true,
+ nodeManagerVersion: "3.0.0-SNAPSHOT",
+ nodeManagerBuildVersion: "3.0.0-SNAPSHOT",
+ nodeManagerVersionBuiltOn: "2000-01-01T00:00Z",
+ hadoopVersion: "3.0.0-SNAPSHOT",
+ hadoopBuildVersion: "3.0.0-SNAPSHOT",
+ hadoopVersionBuiltOn: "2000-01-01T00:00Z",
+ id: "localhost:64318", nodeHostName: "192.168.0.102",
+ nmStartupTime: 1456250208231
+ }
+ };
+ assert.expect(6);
+ var id = "localhost:64318";
+ var response = serializer.normalizeSingleResponse({}, modelClass, payload, id, null);
+ assert.equal(response.data.id, id);
+ assert.equal(response.data.type, modelClass.modelName);
+ assert.equal(response.data.attributes.totalVmemAllocatedContainersMB,
+ payload.nodeInfo.totalVmemAllocatedContainersMB);
+ assert.equal(response.data.attributes.totalPmemAllocatedContainersMB,
+ payload.nodeInfo.totalPmemAllocatedContainersMB);
+ assert.equal(response.data.attributes.totalVCoresAllocatedContainers,
+ payload.nodeInfo.totalVCoresAllocatedContainers);
+ assert.equal(response.data.attributes.nmStartupTime,
+ Converter.timeStampToDate(payload.nodeInfo.nmStartupTime));
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-rm-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-rm-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-rm-node-test.js
new file mode 100644
index 0000000..bc6397d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/serializers/yarn-rm-node-test.js
@@ -0,0 +1,153 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('serializer:yarn-rm-node', 'Unit | Serializer | RMNode', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+ assert.ok(serializer.normalizeArrayResponse);
+ assert.ok(serializer.internalNormalizeSingleResponse);
+});
+
+test('normalizeArrayResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-rm-node"
+ },
+ payload = {
+ nodes: {
+ node: [{
+ rack: "/default-rack", state: "RUNNING", id: "192.168.1.1:64318",
+ nodeHostName: "192.168.1.1", nodeHTTPAddress: "192.168.1.1:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 2048,
+ availMemoryMB: 161792, usedVirtualCores: 2,
+ availableVirtualCores: 158, nodeLabels: ["x"],
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }
+ },{
+ rack: "/default-rack", state: "RUNNING", id: "192.168.1.2:64318",
+ nodeHostName: "192.168.1.2", nodeHTTPAddress: "192.168.1.2:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 0,
+ availMemoryMB: 163840, usedVirtualCores: 0,
+ availableVirtualCores: 160, nodeLabels: ["y"],
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }
+ }]
+ }
+ };
+ assert.expect(12);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 2);
+ assert.equal(response.data[0].id, "192.168.1.1:64318");
+ assert.equal(response.data[1].id, "192.168.1.2:64318");
+ for (var i = 0; i < 2; i++) {
+ assert.equal(response.data[i].type, modelClass.modelName);
+ assert.equal(response.data[i].attributes.nodeHostName,
+ payload.nodes.node[i].nodeHostName);
+ assert.equal(response.data[i].attributes.nodeHTTPAddress,
+ payload.nodes.node[i].nodeHTTPAddress);
+ assert.deepEqual(response.data[i].attributes.nodeLabels,
+ payload.nodes.node[i].nodeLabels);
+ }
+});
+
+test('normalizeArrayResponse no nodes test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-rm-node"
+ },
+ payload = { nodes: null };
+ assert.expect(5);
+ var response =
+ serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
+ console.log(response);
+ assert.ok(response.data);
+ assert.equal(response.data.length, 1);
+ assert.equal(response.data[0].type, modelClass.modelName);
+ assert.equal(response.data[0].id, "dummy");
+ assert.equal(response.data[0].attributes.nodeHostName, undefined);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-rm-node"
+ },
+ payload = {
+ node: {
+ rack: "/default-rack", state: "RUNNING", id: "192.168.1.1:64318",
+ nodeHostName: "192.168.1.1", nodeHTTPAddress: "192.168.1.1:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 2048,
+ availMemoryMB: 161792, usedVirtualCores: 2,
+ availableVirtualCores: 158, nodeLabels: ["x"],
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }
+ }
+ };
+ assert.expect(13);
+ var id = "localhost:64318";
+ var response =
+ serializer.normalizeSingleResponse({}, modelClass, payload, id, null);
+ assert.ok(response.data);
+ assert.equal(response.data.id, id);
+ assert.equal(response.data.type, modelClass.modelName);
+ assert.equal(response.data.attributes.rack, payload.node.rack);
+ assert.equal(response.data.attributes.state, payload.node.state);
+ assert.equal(response.data.attributes.nodeHostName,
+ payload.node.nodeHostName);
+ assert.equal(response.data.attributes.nodeHTTPAddress,
+ payload.node.nodeHTTPAddress);
+ assert.equal(response.data.attributes.version, payload.node.version);
+ assert.equal(response.data.attributes.availMemoryMB,
+ payload.node.availMemoryMB);
+ assert.equal(response.data.attributes.usedMemoryMB,
+ payload.node.usedMemoryMB);
+ assert.equal(response.data.attributes.availableVirtualCores,
+ payload.node.availableVirtualCores);
+ assert.equal(response.data.attributes.usedVirtualCores,
+ payload.node.usedVirtualCores);
+ assert.deepEqual(response.data.attributes.nodeLabels,
+ payload.node.nodeLabels);
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/utils/converter-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/utils/converter-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/utils/converter-test.js
new file mode 100644
index 0000000..481537d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/utils/converter-test.js
@@ -0,0 +1,52 @@
+/**
+ * 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.
+ */
+
+import converter from '../../../utils/converter';
+import { module, test } from 'qunit';
+
+module('Unit | Utility | Converter');
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ assert.ok(converter);
+ assert.ok(converter.splitForContainerLogs);
+});
+
+test('split for container logs', function(assert) {
+ var id = "localhost:64318!container_e32_1456000363780_0002_01_000001!" +
+ "syslog";
+ var arr = converter.splitForContainerLogs(id);
+ assert.ok(arr);
+ assert.deepEqual(arr, ["localhost:64318",
+ "container_e32_1456000363780_0002_01_000001", "syslog"]);
+ id = "localhost:64318!container_e32_1456000363780_0002_01_000001!" +
+ "syslog!logs";
+ arr = converter.splitForContainerLogs(id);
+ assert.ok(arr);
+ assert.deepEqual(arr, ["localhost:64318",
+ "container_e32_1456000363780_0002_01_000001", "syslog!logs"]);
+ id = "localhost:64318!container_e32_1456000363780_0002_01_000001";
+ arr = converter.splitForContainerLogs(id);
+ assert.notOk(arr);
+ id = null;
+ arr = converter.splitForContainerLogs(id);
+ assert.notOk(arr);
+ id = undefined;
+ arr = converter.splitForContainerLogs(id);
+ assert.notOk(arr);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/utils/sorter-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/utils/sorter-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/utils/sorter-test.js
new file mode 100644
index 0000000..8f17380
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/utils/sorter-test.js
@@ -0,0 +1,26 @@
+/**
+ * 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.
+ */
+
+import Sorter from 'yarn-ui/utils/sorter';
+import { module, test } from 'qunit';
+
+module('Unit | Utility | Sorter');
+
+test('Basic creation test', function(assert) {
+ assert.ok(Sorter);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/testem.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/testem.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/testem.json
deleted file mode 100644
index 0f35392..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/testem.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "framework": "qunit",
- "test_page": "tests/index.html?hidepassed",
- "disable_watching": true,
- "launch_in_ci": [
- "PhantomJS"
- ],
- "launch_in_dev": [
- "PhantomJS",
- "Chrome"
- ]
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc
deleted file mode 100644
index 6ec0b7c..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "predef": [
- "document",
- "window",
- "location",
- "setTimeout",
- "$",
- "-Promise",
- "define",
- "console",
- "visit",
- "exists",
- "fillIn",
- "click",
- "keyEvent",
- "triggerEvent",
- "find",
- "findWithAssert",
- "wait",
- "DS",
- "andThen",
- "currentURL",
- "currentPath",
- "currentRouteName"
- ],
- "node": false,
- "browser": false,
- "boss": true,
- "curly": true,
- "debug": false,
- "devel": false,
- "eqeqeq": true,
- "evil": true,
- "forin": false,
- "immed": false,
- "laxbreak": false,
- "newcap": true,
- "noarg": true,
- "noempty": false,
- "nonew": false,
- "nomen": false,
- "onevar": false,
- "plusplus": false,
- "regexp": false,
- "undef": true,
- "sub": true,
- "strict": false,
- "white": false,
- "eqnull": true,
- "esnext": true,
- "unused": true
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/resolver.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/resolver.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/resolver.js
deleted file mode 100644
index 28f4ece..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/resolver.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import Resolver from 'ember/resolver';
-import config from '../../config/environment';
-
-var resolver = Resolver.create();
-
-resolver.namespace = {
- modulePrefix: config.modulePrefix,
- podModulePrefix: config.podModulePrefix
-};
-
-export default resolver;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/start-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/start-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/start-app.js
deleted file mode 100644
index 0f7aab1..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/start-app.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Ember from 'ember';
-import Application from '../../app';
-import config from '../../config/environment';
-
-export default function startApp(attrs) {
- var application;
-
- var attributes = Ember.merge({}, config.APP);
- attributes = Ember.merge(attributes, attrs); // use defaults, but you can override;
-
- Ember.run(function() {
- application = Application.create(attributes);
- application.setupForTesting();
- application.injectTestHelpers();
- });
-
- return application;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/index.html
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/index.html b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/index.html
deleted file mode 100644
index 33f7045..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>YarnUi Tests</title>
- <meta name="description" content="">
- <meta name="viewport" content="width=device-width, initial-scale=1">
-
- {{content-for 'head'}}
- {{content-for 'test-head'}}
-
- <link rel="stylesheet" href="assets/vendor.css">
- <link rel="stylesheet" href="assets/yarn-ui.css">
- <link rel="stylesheet" href="assets/test-support.css">
-
- {{content-for 'head-footer'}}
- {{content-for 'test-head-footer'}}
- </head>
- <body>
-
- {{content-for 'body'}}
- {{content-for 'test-body'}}
- <script src="assets/vendor.js"></script>
- <script src="assets/test-support.js"></script>
- <script src="assets/yarn-ui.js"></script>
- <script src="testem.js"></script>
- <script src="assets/test-loader.js"></script>
-
- {{content-for 'body-footer'}}
- {{content-for 'test-body-footer'}}
- </body>
-</html>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/test-helper.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/test-helper.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/test-helper.js
deleted file mode 100644
index e6cfb70..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/test-helper.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import resolver from './helpers/resolver';
-import {
- setResolver
-} from 'ember-qunit';
-
-setResolver(resolver);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/.gitkeep
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-app-test.js
deleted file mode 100644
index 5683d5a..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-app-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('adapter:yarn-app', 'Unit | Adapter | yarn app', {
- // Specify the other units that are required for this test.
- // needs: ['serializer:foo']
-});
-
-// Replace this with your real tests.
-test('it exists', function(assert) {
- var adapter = this.subject();
- assert.ok(adapter);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-container-log-test.js
deleted file mode 100644
index e6e7b43..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-container-log-test.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-import Constants from 'yarn-ui/constants';
-
-moduleFor('adapter:yarn-container-log', 'Unit | Adapter | ContainerLog', {
-});
-
-test('Basic creation', function(assert) {
- let adapter = this.subject();
-
- assert.ok(adapter);
- assert.ok(adapter.urlForFindRecord);
- assert.ok(adapter.ajax);
- assert.ok(adapter.headers);
- assert.ok(adapter.host);
- assert.ok(adapter.namespace);
- assert.equal(adapter.headers.Accept, "text/plain");
- assert.equal(adapter.namespace, "ws/v1/node");
-});
-
-test('urlForFindRecord test', function(assert) {
- let adapter = this.subject();
- let host = adapter.host;
- assert.equal(adapter.urlForFindRecord("localhost:8042" +
- Constants.PARAM_SEPARATOR + "container_e27_11111111111_0001_01_000001" +
- Constants.PARAM_SEPARATOR + "syslog"),
- host + "localhost:8042/ws/v1/node/containerlogs/" +
- "container_e27_11111111111_0001_01_000001/syslog");
-});
-
-test('ajaxOptions test', function(assert) {
- let adapter = this.subject();
- var hash = adapter.ajaxOptions('/containerlogs', 'type', {});
- assert.equal(hash.dataType, 'text');
-});
-
-test('findRecord test', function(assert) {
- let adapter = this.subject(),
- testModel = { modelName: "testModel" },
- testStore = {},
- testSnapshot = {};
- let host = adapter.host;
- let testId = "localhost:8042" + Constants.PARAM_SEPARATOR +
- "container_e27_11111111111_0001_01_000001" + Constants.PARAM_SEPARATOR +
- "syslog";
- assert.expect(2);
-
- adapter.ajax = function (url, method) {
- assert.equal(url, host + "localhost:8042/ws/v1/node/containerlogs/" +
- "container_e27_11111111111_0001_01_000001/syslog");
- assert.equal(method, 'GET');
- };
-
- adapter.findRecord(testStore, testModel, testId, testSnapshot);
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-app-test.js
deleted file mode 100644
index 3a25996..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-app-test.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('adapter:yarn-node-app', 'Unit | Adapter | NodeApp', {
-});
-
-test('Basic creation', function(assert) {
- let adapter = this.subject();
- assert.expect(11);
- assert.ok(adapter);
- assert.ok(adapter.urlForQueryRecord);
- assert.ok(adapter.queryRecord);
- assert.ok(adapter.urlForQuery);
- assert.ok(adapter.query);
- assert.ok(adapter.ajax);
- assert.ok(adapter.headers);
- assert.ok(adapter.host);
- assert.ok(adapter.namespace);
- assert.equal("application/json", adapter.headers.Accept);
- assert.equal("ws/v1/node", adapter.namespace);
-});
-
-test('urlForQueryRecord test', function(assert) {
- let adapter = this.subject();
- let host = adapter.host;
- assert.equal(
- host + "localhost:8042/ws/v1/node/apps/application_1111111111_1111",
- adapter.urlForQueryRecord(
- {nodeAddr: "localhost:8042", appId: "application_1111111111_1111"}));
-});
-
-test('urlForQuery test', function(assert) {
- let adapter = this.subject();
- let host = adapter.host;
- assert.equal(host + "localhost:8042/ws/v1/node/apps",
- adapter.urlForQuery({nodeAddr: "localhost:8042"}));
-});
-
-test('query test', function(assert) {
- let adapter = this.subject(),
- testModel = { modelName: "testModel" },
- testStore = {},
- testQuery = {nodeAddr: "localhost:8042"};
- let host = adapter.host;
- assert.expect(3);
-
- adapter.ajax = function (url, method, hash) {
- assert.equal(host + "localhost:8042/ws/v1/node/apps", url);
- assert.equal('GET', method);
- assert.equal(null, hash.data);
- };
-
- adapter.query(testStore, testModel, testQuery);
-});
-
-test('queryRecord test', function(assert) {
- let adapter = this.subject(),
- testModel = { modelName: "testModel" },
- testStore = {},
- testQuery = {
- nodeAddr: "localhost:8042",
- appId: "application_1111111111_1111"
- };
- let host = adapter.host;
- assert.expect(3);
-
- adapter.ajax = function (url, method, hash) {
- assert.equal(
- host + "localhost:8042/ws/v1/node/apps/application_1111111111_1111",
- url);
- assert.equal('GET', method);
- assert.equal(null, hash.data);
- };
-
- adapter.queryRecord(testStore, testModel, testQuery);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-container-test.js
deleted file mode 100644
index 7d2bb2d..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-container-test.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('adapter:yarn-node-container', 'Unit | Adapter | NodeContainer', {
-});
-
-test('Basic creation', function(assert) {
- let adapter = this.subject();
- assert.expect(11);
- assert.ok(adapter);
- assert.ok(adapter.urlForQueryRecord);
- assert.ok(adapter.queryRecord);
- assert.ok(adapter.urlForQuery);
- assert.ok(adapter.query);
- assert.ok(adapter.ajax);
- assert.ok(adapter.headers);
- assert.ok(adapter.host);
- assert.ok(adapter.namespace);
- assert.equal("application/json", adapter.headers.Accept);
- assert.equal("ws/v1/node", adapter.namespace);
-});
-
-test('urlForQueryRecord test', function(assert) {
- let adapter = this.subject();
- let host = adapter.host;
- assert.equal(host + "localhost:8042/ws/v1/node/containers/" +
- "container_e27_11111111111_0001_01_000001",
- adapter.urlForQueryRecord(
- {nodeHttpAddr: "localhost:8042",
- containerId: "container_e27_11111111111_0001_01_000001"}));
-});
-
-test('urlForQuery test', function(assert) {
- let adapter = this.subject();
- let host = adapter.host;
- assert.equal(host + "localhost:8042/ws/v1/node/containers",
- adapter.urlForQuery({nodeHttpAddr: "localhost:8042"}));
-});
-
-test('query test', function(assert) {
- let adapter = this.subject(),
- testModel = { modelName: "testModel" },
- testStore = {},
- testQuery = {nodeHttpAddr: "localhost:8042"};
- let host = adapter.host;
- assert.expect(3);
-
- adapter.ajax = function (url, method, hash) {
- assert.equal(host + "localhost:8042/ws/v1/node/containers", url);
- assert.equal('GET', method);
- assert.equal(null, hash.data);
- };
-
- adapter.query(testStore, testModel, testQuery);
-});
-
-test('queryRecord test', function(assert) {
- let adapter = this.subject(),
- testModel = { modelName: "testModel" },
- testStore = {},
- testQuery = {
- nodeHttpAddr: "localhost:8042",
- containerId: "container_e27_11111111111_0001_01_000001"
- };
- let host = adapter.host;
- assert.expect(3);
-
- adapter.ajax = function (url, method, hash) {
- assert.equal(host + "localhost:8042/ws/v1/node/containers/" +
- "container_e27_11111111111_0001_01_000001", url);
- assert.equal('GET', method);
- assert.equal(null, hash.data);
- };
-
- adapter.queryRecord(testStore, testModel, testQuery);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-test.js
deleted file mode 100644
index 15aefef..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-test.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('adapter:yarn-node', 'Unit | Adapter | Node', {
-});
-
-test('Basic creation', function(assert) {
- let adapter = this.subject();
-
- assert.ok(adapter);
- assert.ok(adapter.urlForFindRecord);
- assert.ok(adapter.ajax);
- assert.ok(adapter.headers);
- assert.ok(adapter.host);
- assert.ok(adapter.namespace);
- assert.equal(adapter.headers.Accept, "application/json");
- assert.equal(adapter.namespace, "ws/v1/node");
-});
-
-test('urlForFindRecord test', function(assert) {
- let adapter = this.subject();
- let host = adapter.host;
- assert.equal(adapter.urlForFindRecord("localhost:8042"),
- host + "localhost:8042/ws/v1/node");
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-rm-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-rm-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-rm-node-test.js
deleted file mode 100644
index bf009d4..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-rm-node-test.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('adapter:yarn-rm-node', 'Unit | Adapter | RMNode', {
- // Specify the other units that are required for this test.
- // needs: ['serializer:foo']
-});
-
-test('Basic creation', function(assert) {
- let adapter = this.subject();
-
- assert.ok(adapter);
- assert.ok(adapter.urlForFindRecord);
- assert.ok(adapter.ajax);
- assert.ok(adapter.headers);
- assert.ok(adapter.host);
- assert.ok(adapter.namespace);
- assert.equal(adapter.headers.Accept, "application/json");
- assert.equal(adapter.namespace, "ws/v1/cluster");
-});
-
-test('urlForFindRecord test', function(assert) {
- let adapter = this.subject();
- let host = adapter.host;
- assert.equal(adapter.urlForFindRecord("localhost:8042"),
- host + "/ws/v1/cluster/nodes/localhost:8042");
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-apps-test.js
deleted file mode 100644
index d25f72d..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-apps-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('controller:yarn-apps', {
- // Specify the other units that are required for this test.
- // needs: ['controller:foo']
-});
-
-// Replace this with your real tests.
-test('it exists', function(assert) {
- var controller = this.subject();
- assert.ok(controller);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-queues-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-queues-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-queues-test.js
deleted file mode 100644
index 313dfdd..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-queues-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('controller:yarn-queues', {
- // Specify the other units that are required for this test.
- // needs: ['controller:foo']
-});
-
-// Replace this with your real tests.
-test('it exists', function(assert) {
- var controller = this.subject();
- assert.ok(controller);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/mixins/charts-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/mixins/charts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/mixins/charts-test.js
deleted file mode 100644
index b4f3503..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/mixins/charts-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import Ember from 'ember';
-import ChartsMixin from '../../../mixins/charts';
-import { module, test } from 'qunit';
-
-module('Unit | Mixin | charts');
-
-// Replace this with your real tests.
-test('it works', function(assert) {
- var ChartsObject = Ember.Object.extend(ChartsMixin);
- var subject = ChartsObject.create();
- assert.ok(subject);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-app-test.js
deleted file mode 100644
index e3261e2..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-app-test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('yarn-app', 'Unit | Model | yarn app', {
- // Specify the other units that are required for this test.
- needs: []
-});
-
-test('it exists', function(assert) {
- var model = this.subject();
- // var store = this.store();
- assert.ok(!!model);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-container-log-test.js
deleted file mode 100644
index 45808a5..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-container-log-test.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('yarn-container-log', 'Unit | Model | ContainerLog', {
- // Specify the other units that are required for this test.
- needs: []
-});
-
-test('Basic creation test', function(assert) {
- let model = this.subject();
- assert.ok(model);
- assert.ok(model._notifyProperties);
- assert.ok(model.didLoad);
- assert.ok(model.logs);
- assert.ok(model.containerID);
- assert.ok(model.logFileName);
-});
-
-test('test fields', function(assert) {
- let model = this.subject();
-
- Ember.run(function () {
- model.set("logs", "This is syslog");
- model.set("containerID", "container_e32_1456000363780_0002_01_000001");
- model.set("logFileName", "syslog");
- assert.equal(model.get("logs"), "This is syslog");
- assert.equal(model.get("containerID"), "container_e32_1456000363780_0002_01_000001");
- assert.equal(model.get("logFileName"), "syslog");
- });
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-app-test.js
deleted file mode 100644
index 7e2e62f..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-app-test.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('yarn-node-app', 'Unit | Model | NodeApp', {
- // Specify the other units that are required for this test.
- needs: []
-});
-
-test('Basic creation test', function(assert) {
- let model = this.subject();
-
- assert.ok(model);
- assert.ok(model._notifyProperties);
- assert.ok(model.didLoad);
- assert.ok(model.appId);
- assert.ok(model.state);
- assert.ok(model.user);
- assert.ok(model.containers);
-});
-
-test('test fields', function(assert) {
- let model = this.subject();
-
- assert.expect(9);
- Ember.run(function () {
- model.set("appId", "application_1456251210105_0002");
- model.set("id", "application_1456251210105_0002");
- model.set("state", "RUNNING");
- model.set("user", "hadoop");
- model.set("containers", ["container_e38_1456251210105_0002_01_000001",
- "container_e38_1456251210105_0002_01_000002"]);
- assert.equal(model.get("appId"), "application_1456251210105_0002");
- assert.equal(model.get("state"), "RUNNING");
- assert.equal(model.get("user"), "hadoop");
- assert.deepEqual(model.get("containers"),
- ["container_e38_1456251210105_0002_01_000001",
- "container_e38_1456251210105_0002_01_000002"]);
- assert.equal(model.get("appStateStyle"), "label label-primary");
- assert.equal(model.get("isDummyApp"), false);
- model.set("id", "dummy");
- assert.equal(model.get("isDummyApp"), true);
- model.set("state", "FINISHED");
- assert.equal(model.get("appStateStyle"), "label label-success");
- model.set("state", "NEW");
- assert.equal(model.get("appStateStyle"), "label label-default");
- });
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-container-test.js
deleted file mode 100644
index 88bf233..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-container-test.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('yarn-node-container', 'Unit | Model | NodeContainer', {
- // Specify the other units that are required for this test.
- needs: []
-});
-
-test('Basic creation test', function(assert) {
- let model = this.subject();
-
- assert.ok(model);
- assert.ok(model._notifyProperties);
- assert.ok(model.didLoad);
- assert.ok(model.containerId);
- assert.ok(model.state);
- assert.ok(model.user);
- assert.ok(model.exitCode);
- assert.ok(model.totalMemoryNeeded);
- assert.ok(model.totalVCoresNeeded);
- assert.ok(model.containerLogFiles);
- assert.ok(model.isDummyContainer);
- assert.ok(model.containerStateStyle);
-});
-
-test('test fields', function(assert) {
- let model = this.subject();
-
- Ember.run(function () {
- model.set("containerId", "container_e32_1456000363780_0002_01_000003");
- model.set("state", "RUNNING");
- model.set("exitCode", "-1000");
- model.set("user", "hadoop");
- model.set("id", "container_e32_1456000363780_0002_01_000003");
- model.set("totalMemoryNeeded", 1024);
- model.set("totalVCoresNeeded", 1);
- model.set("containerLogFiles", ["syslog", "stderr", "stdout"]);
- assert.equal(model.get("containerId"), "container_e32_1456000363780_0002_01_000003");
- assert.equal(model.get("id"), "container_e32_1456000363780_0002_01_000003");
- assert.equal(model.get("totalMemoryNeeded"), 1024);
- assert.equal(model.get("totalVCoresNeeded"), 1);
- assert.equal(model.get("user"), "hadoop");
- assert.equal(model.get("exitCode"), "-1000");
- assert.equal(model.get("containerLogFiles").length, 3);
- assert.deepEqual(model.get("containerLogFiles"), ["syslog", "stderr", "stdout"]);
- assert.equal(model.get("isDummyContainer"), false);
- assert.equal(model.get("containerStateStyle"), "label label-primary");
- model.set("id", "dummy");
- assert.equal(model.get("isDummyContainer"), true);
- model.set("state", "EXITED_WITH_SUCCESS");
- assert.equal(model.get("containerStateStyle"), "label label-success");
- model.set("state", "EXITED_WITH_FAILURE");
- assert.equal(model.get("containerStateStyle"), "label label-danger");
- model.set("state", "DONE");
- model.set("exitCode", "0");
- assert.equal(model.get("containerStateStyle"), "label label-success");
- model.set("exitCode", "-105");
- assert.equal(model.get("containerStateStyle"), "label label-danger");
- });
-});
-
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[46/50] [abbrv] hadoop git commit: YARN-4849. Addendum patch to fix
javadocs. (Sunil G via wangda)
Posted by su...@apache.org.
YARN-4849. Addendum patch to fix javadocs. (Sunil G via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6a945cf1
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6a945cf1
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6a945cf1
Branch: refs/heads/YARN-3368
Commit: 6a945cf18d71e810f2d384c4cefb5f303deb00a9
Parents: cfda0c2
Author: Wangda Tan <wa...@apache.org>
Authored: Fri Sep 9 10:54:37 2016 -0700
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop/yarn/server/resourcemanager/ResourceManager.java | 6 ++++++
1 file changed, 6 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a945cf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
index d32f649..f739e31 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
@@ -916,6 +916,12 @@ public class ResourceManager extends CompositeService implements Recoverable {
* Return a HttpServer.Builder that the journalnode / namenode / secondary
* namenode can use to initialize their HTTP / HTTPS server.
*
+ * @param conf configuration object
+ * @param httpAddr HTTP address
+ * @param httpsAddr HTTPS address
+ * @param name Name of the server
+ * @throws IOException from Builder
+ * @return builder object
*/
public static HttpServer2.Builder httpServerTemplateForRM(Configuration conf,
final InetSocketAddress httpAddr, final InetSocketAddress httpsAddr,
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[09/50] [abbrv] hadoop git commit: YARN-4517. Add nodes page and fix
bunch of license issues. (Varun Saxena via wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/error.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/error.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/error.hbs
new file mode 100644
index 0000000..c546bf7
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/error.hbs
@@ -0,0 +1,19 @@
+{{!--
+ 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.
+--}}
+
+<h3 align = "center">Sorry, Error Occured.</h3>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/notfound.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/notfound.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/notfound.hbs
new file mode 100644
index 0000000..588ea44
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/notfound.hbs
@@ -0,0 +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.
+--}}
+
+<h2 align = "center">404, Not Found</h2>
+<h4 align = "center">Please Check your URL</h4>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
index e58d6bd..3a79080 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
@@ -1,3 +1,3 @@
{{app-table table-id="apps-table" arr=model}}
-{{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
-{{outlet}}
\ No newline at end of file
+{{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc" colTypes="natural elapsed-time" colTargets="0 7"}}
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-container-log.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-container-log.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-container-log.hbs
new file mode 100644
index 0000000..9cc3b0f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-container-log.hbs
@@ -0,0 +1,36 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ {{node-menu path="yarnContainerLog" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h5 align="center"><b>{{model.containerLog.logFileName}} for {{model.containerLog.containerID}}</b></h5>
+ </div>
+ <div class="panel-body">
+ {{#if model.containerLog.logs}}
+ <pre>{{model.containerLog.logs}}</pre>
+ {{else}}
+ <p>No logs were written in {{model.containerLog.logFileName}}.</p>
+ {{/if}}
+ </div>
+ </div>
+ </div>
+</div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-app.hbs
new file mode 100644
index 0000000..4da64b8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-app.hbs
@@ -0,0 +1,60 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNodeApp" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading"><b>Application Information</b></div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>Application ID</td>
+ <td>{{model.nodeApp.appId}}</td>
+ </tr>
+ <tr>
+ <td>Application State</td>
+ <td>{{model.nodeApp.state}}</td>
+ </tr>
+ <tr>
+ <td>User</td>
+ <td>{{model.nodeApp.user}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <table id="node-app-table" class="display table table-striped table-bordered" cellspacing="0">
+ <thead>
+ <tr>
+ <th>Containers for {{model.nodeApp.appId}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each model.nodeApp.containers as |container|}}
+ <tr>
+ <td><a href="yarnNodeContainer/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container}}">{{container}}</a></td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+ {{simple-table table-id="node-app-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
+ </div>
+ </div>
+ </div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-apps.hbs
new file mode 100644
index 0000000..c195397
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-apps.hbs
@@ -0,0 +1,51 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNodeApps" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10 container-fluid">
+ <table id="node-apps-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Application ID</th>
+ <th>State</th>
+ <th>User</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if model.apps}}
+ {{#each model.apps as |app|}}
+ {{#if app.isDummyApp}}
+ <tr><td colspan="3" align="center">No apps found on this node</td></tr>
+ {{else}}
+ <tr>
+ <td><a href="yarnNodeApp/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{app.appId}}">{{app.appId}}</a></td>
+ <td><span class={{app.appStateStyle}}>{{app.state}}</span></td>
+ <td>{{app.user}}</td>
+ </tr>
+ {{/if}}
+ {{/each}}
+ {{/if}}
+ </tbody>
+ </table>
+ {{simple-table table-id="node-apps-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
+ </div>
+ </div>
+</div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-container.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-container.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-container.hbs
new file mode 100644
index 0000000..fbbb2fc
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-container.hbs
@@ -0,0 +1,70 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNodeContainer" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading"><b>Container Information</b></div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>Container ID</td>
+ <td>{{model.nodeContainer.containerId}}</td>
+ </tr>
+ <tr>
+ <td>Container State</td>
+ <td>{{model.nodeContainer.state}}</td>
+ </tr>
+ <tr>
+ <td>Exit Code</td>
+ <td>{{model.nodeContainer.exitCode}}</td>
+ </tr>
+ <tr>
+ <td>Diagnostics</td>
+ <td>{{model.nodeContainer.diagnostics}}</td>
+ </tr>
+ <tr>
+ <td>User</td>
+ <td>{{model.nodeContainer.user}}</td>
+ </tr>
+ <tr>
+ <td>Total Memory Needed</td>
+ <td>{{model.nodeContainer.totalMemoryNeeded}} MB</td>
+ </tr>
+ <tr>
+ <td>Total VCores Needed</td>
+ <td>{{model.nodeContainer.totalVCoresNeeded}}</td>
+ </tr>
+ <tr>
+ <td>Link to Logs</td>
+ <td>
+ {{log-files-comma nodeId=model.nodeInfo.id
+ nodeAddr=model.nodeInfo.addr
+ containerId=model.nodeContainer.containerId
+ logFiles=model.nodeContainer.containerLogFiles}}
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-containers.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-containers.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-containers.hbs
new file mode 100644
index 0000000..ca80ccd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-containers.hbs
@@ -0,0 +1,58 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNodeContainers" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10 container-fluid">
+ <table id="node-containers-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Container ID</th>
+ <th>Container State</th>
+ <th>User</th>
+ <th>Logs</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if model.containers}}
+ {{#each model.containers as |container|}}
+ {{#if container.isDummyContainer}}
+ <tr><td colspan="4" align="center">No containers found on this node</td></tr>
+ {{else}}
+ <tr>
+ <td><a href="yarnNodeContainer/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container.containerId}}">{{container.containerId}}</a></td>
+ <td><span class={{container.containerStateStyle}}>{{container.state}}</span></td>
+ <td>{{container.user}}</td>
+ <td>
+ {{log-files-comma nodeId=model.nodeInfo.id
+ nodeAddr=model.nodeInfo.addr
+ containerId=container.containerId
+ logFiles=container.containerLogFiles}}
+ </td>
+ </tr>
+ {{/if}}
+ {{/each}}
+ {{/if}}
+ </tbody>
+ </table>
+ {{simple-table table-id="node-containers-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
+ </div>
+ </div>
+</div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node.hbs
new file mode 100644
index 0000000..a036076
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node.hbs
@@ -0,0 +1,94 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNode" nodeId=model.rmNode.id nodeAddr=model.node.id}}
+ <div class="col-md-10 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Node Information</div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>Total Vmem allocated for Containers</td>
+ <td>{{divide num=model.node.totalVmemAllocatedContainersMB den=1024}} GB</td>
+ </tr>
+ <tr>
+ <td>Vmem enforcement enabled</td>
+ <td>{{model.node.vmemCheckEnabled}}</td>
+ </tr>
+ <tr>
+ <td>Total Pmem allocated for Containers</td>
+ <td>{{divide num=model.node.totalPmemAllocatedContainersMB den=1024}} GB</td>
+ </tr>
+ <tr>
+ <td>Pmem enforcement enabled</td>
+ <td>{{model.node.pmemCheckEnabled}}</td>
+ </tr>
+ <tr>
+ <td>Total VCores allocated for Containers</td>
+ <td>{{model.node.totalVCoresAllocatedContainers}}</td>
+ </tr>
+ <tr>
+ <td>Node Healthy Status</td>
+ <td>{{model.node.nodeHealthy}}</td>
+ </tr>
+ <tr>
+ <td>Last Node Health Report Time</td>
+ <td>{{model.node.lastNodeUpdateTime}}</td>
+ </tr>
+ <tr>
+ <td>Node Health Report</td>
+ <td>{{model.node.healthReport}}</td>
+ </tr>
+ <tr>
+ <td>Node Manager Start Time</td>
+ <td>{{model.node.nmStartupTime}}</td>
+ </tr>
+ <tr>
+ <td>Node Manager Version</td>
+ <td>{{model.node.nodeManagerBuildVersion}}</td>
+ </tr>
+ <tr>
+ <td>Hadoop Version</td>
+ <td>{{model.node.hadoopBuildVersion}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="col-lg-4 container-fluid" id="mem-donut-chart">
+ {{donut-chart data=model.rmNode.getMemoryDataForDonutChart
+ title="Resource - Memory (in MB)"
+ showLabels=true
+ parentId="mem-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+
+ <div class="col-lg-4 container-fluid" id="vcore-donut-chart">
+ {{donut-chart data=model.rmNode.getVCoreDataForDonutChart
+ title="Resource - VCores"
+ showLabels=true
+ parentId="vcore-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
+</div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-nodes.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-nodes.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-nodes.hbs
new file mode 100644
index 0000000..bf2a098
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-nodes.hbs
@@ -0,0 +1,65 @@
+{{!--
+ 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.
+--}}
+
+<table id="nodes-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Node Labels</th>
+ <th>Rack</th>
+ <th>Node State</th>
+ <th>Node Address</th>
+ <th>Node HTTP Address</th>
+ <th>Last Health Update</th>
+ <th>Health-Report</th>
+ <th>Containers</th>
+ <th>Mem Used</th>
+ <th>Mem Avail</th>
+ <th>VCores Used</th>
+ <th>VCores Avail</th>
+ <th>Version</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if model}}
+ {{#each model as |node|}}
+ {{#if node.isDummyNode}}
+ <tr><td colspan="13" align="center">No nodes found on this cluster</td></tr>
+ {{else}}
+ <tr>
+ <td>{{node.nodeLabelsAsString}}</td>
+ <td>{{node.rack}}</td>
+ <td><span class={{node.nodeStateStyle}}>{{node.state}}</span></td>
+ <td>{{node.id}}</td>
+ {{node-link nodeId=node.id nodeHTTPAddress=node.nodeHTTPAddress nodeState=node.state}}
+ <td>{{node.lastHealthUpdate}}</td>
+ <td>{{node.healthReport}}</td>
+ <td>{{node.numContainers}}</td>
+ <td>{{divide num=node.usedMemoryMB den=1024}} GB</td>
+ <td>{{divide num=node.availMemoryMB den=1024}} GB</td>
+ <td>{{node.usedVirtualCores}}</td>
+ <td>{{node.availableVirtualCores}}</td>
+ <td>{{node.version}}</td>
+ </tr>
+ {{/if}}
+ {{/each}}
+ {{/if}}
+ </tbody>
+</table>
+
+{{simple-table table-id="nodes-table" bFilter=true}}
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
index 41e6c9c..0f49a58 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
@@ -1,3 +1,5 @@
+import Constants from 'yarn-ui/constants';
+
export default {
containerIdToAttemptId: function(containerId) {
if (containerId) {
@@ -70,5 +72,20 @@ export default {
var ts = moment(date, "YYYY/MM/DD HH:mm:ss").valueOf();
return ts;
}
- }
-}
+ },
+ splitForContainerLogs: function(id) {
+ if (id) {
+ var splits = id.split(Constants.PARAM_SEPARATOR);
+ var splitLen = splits.length;
+ if (splitLen < 3) {
+ return null;
+ }
+ var fileName = splits[2];
+ var index;
+ for (index = 3; index < splitLen; index++) {
+ fileName = fileName + Constants.PARAM_SEPARATOR + splits[index];
+ }
+ return [splits[0], splits[1], fileName];
+ }
+ },
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
index 981429b..a9a5f7f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
@@ -1,15 +1,55 @@
import Converter from 'yarn-ui/utils/converter';
+import Ember from 'ember';
export default {
_initElapsedTimeSorter: function() {
- jQuery.extend(jQuery.fn.dataTableExt.oSort, {
+ Ember.$.extend(Ember.$.fn.dataTableExt.oSort, {
"elapsed-time-pre": function (a) {
return Converter.padding(Converter.elapsedTimeToMs(a), 20);
},
});
},
+ _initNaturalSorter: function() {
+ Ember.$.extend(Ember.$.fn.dataTableExt.oSort, {
+ "natural-asc": function (a, b) {
+ return naturalSort(a,b);
+ },
+ "natural-desc": function (a, b) {
+ return naturalSort(a,b) * -1;
+ },
+ });
+ },
+
initDataTableSorter: function() {
this._initElapsedTimeSorter();
+ this._initNaturalSorter();
},
+};
+
+/**
+ * Natural sort implementation.
+ * Typically used to sort application Ids'.
+ */
+function naturalSort(a, b) {
+ var diff = a.length - b.length;
+ if (diff != 0) {
+ var splitA = a.split("_");
+ var splitB = b.split("_");
+ if (splitA.length != splitB.length) {
+ return a.localeCompare(b);
+ }
+ for (var i = 1; i < splitA.length; i++) {
+ var splitdiff = splitA[i].length - splitB[i].length;
+ if (splitdiff != 0) {
+ return splitdiff;
+ }
+ var splitCompare = splitA[i].localeCompare(splitB[i]);
+ if (splitCompare != 0) {
+ return splitCompare;
+ }
+ }
+ return diff;
+ }
+ return a.localeCompare(b);
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
index ec587bb..de66650 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
@@ -9,7 +9,7 @@
"ember-qunit": "0.4.9",
"ember-qunit-notifications": "0.0.7",
"ember-resolver": "~0.1.18",
- "jquery": "^1.11.3",
+ "jquery": "1.11.3",
"loader.js": "ember-cli/loader.js#3.2.1",
"qunit": "~1.18.0",
"bootstrap": "~3.3.2",
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
index b898e0d..bb4f8d2 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
@@ -12,7 +12,6 @@ module.exports = function(environment) {
// e.g. 'with-controller': true
}
},
-
APP: {
// Here you can pass flags/options to your application instance
// when it is created
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-container-log-test.js
new file mode 100644
index 0000000..e6e7b43
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-container-log-test.js
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Constants from 'yarn-ui/constants';
+
+moduleFor('adapter:yarn-container-log', 'Unit | Adapter | ContainerLog', {
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+
+ assert.ok(adapter);
+ assert.ok(adapter.urlForFindRecord);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal(adapter.headers.Accept, "text/plain");
+ assert.equal(adapter.namespace, "ws/v1/node");
+});
+
+test('urlForFindRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(adapter.urlForFindRecord("localhost:8042" +
+ Constants.PARAM_SEPARATOR + "container_e27_11111111111_0001_01_000001" +
+ Constants.PARAM_SEPARATOR + "syslog"),
+ host + "localhost:8042/ws/v1/node/containerlogs/" +
+ "container_e27_11111111111_0001_01_000001/syslog");
+});
+
+test('ajaxOptions test', function(assert) {
+ let adapter = this.subject();
+ var hash = adapter.ajaxOptions('/containerlogs', 'type', {});
+ assert.equal(hash.dataType, 'text');
+});
+
+test('findRecord test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testSnapshot = {};
+ let host = adapter.host;
+ let testId = "localhost:8042" + Constants.PARAM_SEPARATOR +
+ "container_e27_11111111111_0001_01_000001" + Constants.PARAM_SEPARATOR +
+ "syslog";
+ assert.expect(2);
+
+ adapter.ajax = function (url, method) {
+ assert.equal(url, host + "localhost:8042/ws/v1/node/containerlogs/" +
+ "container_e27_11111111111_0001_01_000001/syslog");
+ assert.equal(method, 'GET');
+ };
+
+ adapter.findRecord(testStore, testModel, testId, testSnapshot);
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-app-test.js
new file mode 100644
index 0000000..3a25996
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-app-test.js
@@ -0,0 +1,93 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-node-app', 'Unit | Adapter | NodeApp', {
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+ assert.expect(11);
+ assert.ok(adapter);
+ assert.ok(adapter.urlForQueryRecord);
+ assert.ok(adapter.queryRecord);
+ assert.ok(adapter.urlForQuery);
+ assert.ok(adapter.query);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal("application/json", adapter.headers.Accept);
+ assert.equal("ws/v1/node", adapter.namespace);
+});
+
+test('urlForQueryRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(
+ host + "localhost:8042/ws/v1/node/apps/application_1111111111_1111",
+ adapter.urlForQueryRecord(
+ {nodeAddr: "localhost:8042", appId: "application_1111111111_1111"}));
+});
+
+test('urlForQuery test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(host + "localhost:8042/ws/v1/node/apps",
+ adapter.urlForQuery({nodeAddr: "localhost:8042"}));
+});
+
+test('query test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testQuery = {nodeAddr: "localhost:8042"};
+ let host = adapter.host;
+ assert.expect(3);
+
+ adapter.ajax = function (url, method, hash) {
+ assert.equal(host + "localhost:8042/ws/v1/node/apps", url);
+ assert.equal('GET', method);
+ assert.equal(null, hash.data);
+ };
+
+ adapter.query(testStore, testModel, testQuery);
+});
+
+test('queryRecord test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testQuery = {
+ nodeAddr: "localhost:8042",
+ appId: "application_1111111111_1111"
+ };
+ let host = adapter.host;
+ assert.expect(3);
+
+ adapter.ajax = function (url, method, hash) {
+ assert.equal(
+ host + "localhost:8042/ws/v1/node/apps/application_1111111111_1111",
+ url);
+ assert.equal('GET', method);
+ assert.equal(null, hash.data);
+ };
+
+ adapter.queryRecord(testStore, testModel, testQuery);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-container-test.js
new file mode 100644
index 0000000..7d2bb2d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-container-test.js
@@ -0,0 +1,93 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-node-container', 'Unit | Adapter | NodeContainer', {
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+ assert.expect(11);
+ assert.ok(adapter);
+ assert.ok(adapter.urlForQueryRecord);
+ assert.ok(adapter.queryRecord);
+ assert.ok(adapter.urlForQuery);
+ assert.ok(adapter.query);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal("application/json", adapter.headers.Accept);
+ assert.equal("ws/v1/node", adapter.namespace);
+});
+
+test('urlForQueryRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(host + "localhost:8042/ws/v1/node/containers/" +
+ "container_e27_11111111111_0001_01_000001",
+ adapter.urlForQueryRecord(
+ {nodeHttpAddr: "localhost:8042",
+ containerId: "container_e27_11111111111_0001_01_000001"}));
+});
+
+test('urlForQuery test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(host + "localhost:8042/ws/v1/node/containers",
+ adapter.urlForQuery({nodeHttpAddr: "localhost:8042"}));
+});
+
+test('query test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testQuery = {nodeHttpAddr: "localhost:8042"};
+ let host = adapter.host;
+ assert.expect(3);
+
+ adapter.ajax = function (url, method, hash) {
+ assert.equal(host + "localhost:8042/ws/v1/node/containers", url);
+ assert.equal('GET', method);
+ assert.equal(null, hash.data);
+ };
+
+ adapter.query(testStore, testModel, testQuery);
+});
+
+test('queryRecord test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testQuery = {
+ nodeHttpAddr: "localhost:8042",
+ containerId: "container_e27_11111111111_0001_01_000001"
+ };
+ let host = adapter.host;
+ assert.expect(3);
+
+ adapter.ajax = function (url, method, hash) {
+ assert.equal(host + "localhost:8042/ws/v1/node/containers/" +
+ "container_e27_11111111111_0001_01_000001", url);
+ assert.equal('GET', method);
+ assert.equal(null, hash.data);
+ };
+
+ adapter.queryRecord(testStore, testModel, testQuery);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-test.js
new file mode 100644
index 0000000..15aefef
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-node-test.js
@@ -0,0 +1,42 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-node', 'Unit | Adapter | Node', {
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+
+ assert.ok(adapter);
+ assert.ok(adapter.urlForFindRecord);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal(adapter.headers.Accept, "application/json");
+ assert.equal(adapter.namespace, "ws/v1/node");
+});
+
+test('urlForFindRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(adapter.urlForFindRecord("localhost:8042"),
+ host + "localhost:8042/ws/v1/node");
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-rm-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-rm-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-rm-node-test.js
new file mode 100644
index 0000000..bf009d4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-rm-node-test.js
@@ -0,0 +1,44 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-rm-node', 'Unit | Adapter | RMNode', {
+ // Specify the other units that are required for this test.
+ // needs: ['serializer:foo']
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+
+ assert.ok(adapter);
+ assert.ok(adapter.urlForFindRecord);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal(adapter.headers.Accept, "application/json");
+ assert.equal(adapter.namespace, "ws/v1/cluster");
+});
+
+test('urlForFindRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(adapter.urlForFindRecord("localhost:8042"),
+ host + "/ws/v1/cluster/nodes/localhost:8042");
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-container-log-test.js
new file mode 100644
index 0000000..45808a5
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-container-log-test.js
@@ -0,0 +1,48 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-container-log', 'Unit | Model | ContainerLog', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.logs);
+ assert.ok(model.containerID);
+ assert.ok(model.logFileName);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ Ember.run(function () {
+ model.set("logs", "This is syslog");
+ model.set("containerID", "container_e32_1456000363780_0002_01_000001");
+ model.set("logFileName", "syslog");
+ assert.equal(model.get("logs"), "This is syslog");
+ assert.equal(model.get("containerID"), "container_e32_1456000363780_0002_01_000001");
+ assert.equal(model.get("logFileName"), "syslog");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-app-test.js
new file mode 100644
index 0000000..7e2e62f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-app-test.js
@@ -0,0 +1,65 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-node-app', 'Unit | Model | NodeApp', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.appId);
+ assert.ok(model.state);
+ assert.ok(model.user);
+ assert.ok(model.containers);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ assert.expect(9);
+ Ember.run(function () {
+ model.set("appId", "application_1456251210105_0002");
+ model.set("id", "application_1456251210105_0002");
+ model.set("state", "RUNNING");
+ model.set("user", "hadoop");
+ model.set("containers", ["container_e38_1456251210105_0002_01_000001",
+ "container_e38_1456251210105_0002_01_000002"]);
+ assert.equal(model.get("appId"), "application_1456251210105_0002");
+ assert.equal(model.get("state"), "RUNNING");
+ assert.equal(model.get("user"), "hadoop");
+ assert.deepEqual(model.get("containers"),
+ ["container_e38_1456251210105_0002_01_000001",
+ "container_e38_1456251210105_0002_01_000002"]);
+ assert.equal(model.get("appStateStyle"), "label label-primary");
+ assert.equal(model.get("isDummyApp"), false);
+ model.set("id", "dummy");
+ assert.equal(model.get("isDummyApp"), true);
+ model.set("state", "FINISHED");
+ assert.equal(model.get("appStateStyle"), "label label-success");
+ model.set("state", "NEW");
+ assert.equal(model.get("appStateStyle"), "label label-default");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-container-test.js
new file mode 100644
index 0000000..88bf233
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-container-test.js
@@ -0,0 +1,78 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-node-container', 'Unit | Model | NodeContainer', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.containerId);
+ assert.ok(model.state);
+ assert.ok(model.user);
+ assert.ok(model.exitCode);
+ assert.ok(model.totalMemoryNeeded);
+ assert.ok(model.totalVCoresNeeded);
+ assert.ok(model.containerLogFiles);
+ assert.ok(model.isDummyContainer);
+ assert.ok(model.containerStateStyle);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ Ember.run(function () {
+ model.set("containerId", "container_e32_1456000363780_0002_01_000003");
+ model.set("state", "RUNNING");
+ model.set("exitCode", "-1000");
+ model.set("user", "hadoop");
+ model.set("id", "container_e32_1456000363780_0002_01_000003");
+ model.set("totalMemoryNeeded", 1024);
+ model.set("totalVCoresNeeded", 1);
+ model.set("containerLogFiles", ["syslog", "stderr", "stdout"]);
+ assert.equal(model.get("containerId"), "container_e32_1456000363780_0002_01_000003");
+ assert.equal(model.get("id"), "container_e32_1456000363780_0002_01_000003");
+ assert.equal(model.get("totalMemoryNeeded"), 1024);
+ assert.equal(model.get("totalVCoresNeeded"), 1);
+ assert.equal(model.get("user"), "hadoop");
+ assert.equal(model.get("exitCode"), "-1000");
+ assert.equal(model.get("containerLogFiles").length, 3);
+ assert.deepEqual(model.get("containerLogFiles"), ["syslog", "stderr", "stdout"]);
+ assert.equal(model.get("isDummyContainer"), false);
+ assert.equal(model.get("containerStateStyle"), "label label-primary");
+ model.set("id", "dummy");
+ assert.equal(model.get("isDummyContainer"), true);
+ model.set("state", "EXITED_WITH_SUCCESS");
+ assert.equal(model.get("containerStateStyle"), "label label-success");
+ model.set("state", "EXITED_WITH_FAILURE");
+ assert.equal(model.get("containerStateStyle"), "label label-danger");
+ model.set("state", "DONE");
+ model.set("exitCode", "0");
+ assert.equal(model.get("containerStateStyle"), "label label-success");
+ model.set("exitCode", "-105");
+ assert.equal(model.get("containerStateStyle"), "label label-danger");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-test.js
new file mode 100644
index 0000000..5877589
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-test.js
@@ -0,0 +1,58 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-node', 'Unit | Model | Node', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.totalVmemAllocatedContainersMB);
+ assert.ok(model.vmemCheckEnabled);
+ assert.ok(model.pmemCheckEnabled);
+ assert.ok(model.nodeHealthy);
+ assert.ok(model.lastNodeUpdateTime);
+ assert.ok(model.healthReport);
+ assert.ok(model.nmStartupTime);
+ assert.ok(model.nodeManagerBuildVersion);
+ assert.ok(model.hadoopBuildVersion);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ assert.expect(4);
+ Ember.run(function () {
+ model.set("totalVmemAllocatedContainersMB", 4096);
+ model.set("totalPmemAllocatedContainersMB", 2048);
+ model.set("totalVCoresAllocatedContainers", 4);
+ model.set("hadoopBuildVersion", "3.0.0-SNAPSHOT");
+ assert.equal(model.get("totalVmemAllocatedContainersMB"), 4096);
+ assert.equal(model.get("totalPmemAllocatedContainersMB"), 2048);
+ assert.equal(model.get("totalVCoresAllocatedContainers"), 4);
+ assert.equal(model.get("hadoopBuildVersion"), "3.0.0-SNAPSHOT");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-rm-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-rm-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-rm-node-test.js
new file mode 100644
index 0000000..4fd2517
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-rm-node-test.js
@@ -0,0 +1,95 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-rm-node', 'Unit | Model | RMNode', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.rack);
+ assert.ok(model.state);
+ assert.ok(model.nodeHostName);
+ assert.ok(model.nodeHTTPAddress);
+ assert.ok(model.lastHealthUpdate);
+ assert.ok(model.healthReport);
+ assert.ok(model.numContainers);
+ assert.ok(model.usedMemoryMB);
+ assert.ok(model.availMemoryMB);
+ assert.ok(model.usedVirtualCores);
+ assert.ok(model.availableVirtualCores);
+ assert.ok(model.version);
+ assert.ok(model.nodeLabels);
+ assert.ok(model.nodeLabelsAsString);
+ assert.ok(model.nodeStateStyle);
+ assert.ok(model.isDummyNode);
+ assert.ok(model.getMemoryDataForDonutChart);
+ assert.ok(model.getVCoreDataForDonutChart);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ Ember.run(function () {
+ model.set("rack", "/default-rack");
+ model.set("state", "RUNNING");
+ model.set("nodeHostName", "localhost");
+ model.set("id", "localhost:64318");
+ model.set("nodeHTTPAddress", "localhost:8042");
+ model.set("usedMemoryMB", 1024);
+ model.set("availMemoryMB", 7168);
+ model.set("usedVirtualCores", 1);
+ model.set("availableVirtualCores", 7);
+ model.set("nodeLabels", ["x"]);
+ assert.equal(model.get("rack"), "/default-rack");
+ assert.equal(model.get("state"), "RUNNING");
+ assert.equal(model.get("nodeHostName"), "localhost");
+ assert.equal(model.get("id"), "localhost:64318");
+ assert.equal(model.get("nodeHTTPAddress"), "localhost:8042");
+ assert.equal(model.get("usedMemoryMB"), 1024);
+ assert.equal(model.get("availMemoryMB"), 7168);
+ assert.equal(model.get("usedVirtualCores"), 1);
+ assert.equal(model.get("availableVirtualCores"), 7);
+ assert.equal(model.get("isDummyNode"), false);
+ assert.deepEqual(model.get("nodeLabels"), ["x"]);
+ assert.equal(model.get("nodeLabelsAsString"), "x");
+ assert.deepEqual(model.get("nodeStateStyle"), "label label-success");
+ assert.deepEqual(model.get("getMemoryDataForDonutChart"),
+ [{label: "Used", value: 1024}, {label: "Available", value: 7168}]);
+ assert.deepEqual(model.get("getVCoreDataForDonutChart"),
+ [{label: "Used", value: 1}, {label: "Available", value: 7}]);
+ model.set("state", "SHUTDOWN");
+ assert.deepEqual(model.get("nodeStateStyle"), "label label-danger");
+ model.set("state", "REBOOTED");
+ assert.deepEqual(model.get("nodeStateStyle"), "label label-warning");
+ model.set("state", "NEW");
+ assert.deepEqual(model.get("nodeStateStyle"), "label label-default");
+ model.set("nodeLabels", ["x","y"]);
+ assert.equal(model.get("nodeLabelsAsString"), "x");
+ model.set("nodeLabels", undefined);
+ assert.equal(model.get("nodeLabelsAsString"), "");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-container-log-test.js
new file mode 100644
index 0000000..4e68da0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-container-log-test.js
@@ -0,0 +1,120 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Constants from 'yarn-ui/constants';
+
+moduleFor('route:yarn-container-log', 'Unit | Route | ContainerLog', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting container log', function(assert) {
+ var response = {
+ logs: "This is syslog",
+ containerID: "container_e32_1456000363780_0002_01_000001",
+ logFileName: "syslog"};
+ var store = {
+ findRecord: function(type) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response);
+ }
+ )}
+ };
+ assert.expect(6);
+ var route = this.subject();
+ route.set('store', store);
+ var model = route.model({node_id: "localhost:64318",
+ node_addr: "localhost:8042",
+ container_id: "container_e32_1456000363780_0002_01_000001",
+ filename: "syslog"});
+ model.then(function(value) {
+ assert.ok(value);
+ assert.ok(value.containerLog);
+ assert.deepEqual(value.containerLog, response);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ });
+});
+
+/**
+ * This can happen when an empty response is sent from server
+ */
+test('Test non HTTP error while getting container log', function(assert) {
+ var error = {};
+ var response = {
+ logs: "",
+ containerID: "container_e32_1456000363780_0002_01_000001",
+ logFileName: "syslog"};
+ var store = {
+ findRecord: function(type) {
+ return new Ember.RSVP.Promise(function(resolve, reject) {
+ reject(error);
+ }
+ )}
+ };
+ assert.expect(6);
+ var route = this.subject();
+ route.set('store', store);
+ var model = route.model({node_id: "localhost:64318",
+ node_addr: "localhost:8042",
+ container_id: "container_e32_1456000363780_0002_01_000001",
+ filename: "syslog"});
+ model.then(function(value) {
+ assert.ok(value);
+ assert.ok(value.containerLog);
+ assert.deepEqual(value.containerLog, response);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ });
+});
+
+test('Test HTTP error while getting container log', function(assert) {
+ var error = {errors: [{status: 404, responseText: 'Not Found'}]};
+ var response = {
+ logs: "",
+ containerID: "container_e32_1456000363780_0002_01_000001",
+ logFileName: "syslog"};
+ var store = {
+ findRecord: function(type) {
+ return new Ember.RSVP.Promise(function(resolve, reject) {
+ reject(error);
+ }
+ )}
+ };
+ assert.expect(5);
+ var route = this.subject();
+ route.set('store', store);
+ var model = route.model({node_id: "localhost:64318",
+ node_addr: "localhost:8042",
+ container_id: "container_e32_1456000363780_0002_01_000001",
+ filename: "syslog"});
+ model.then(function(value) {
+ assert.ok(value);
+ assert.ok(value.errors);
+ assert.equal(value.errors.length, 1);
+ assert.equal(value.errors[0].status, 404);
+ assert.equal(value.errors[0].responseText, 'Not Found');
+ });
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-app-test.js
new file mode 100644
index 0000000..8e5acf9
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-app-test.js
@@ -0,0 +1,56 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-node-app', 'Unit | Route | NodeApp', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting specific app on a node', function(assert) {
+ var response =
+ {id:"application_1456251210105_0001", state:"FINISHED", user:"root"};
+ var store = {
+ queryRecord: function(type, query) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response);
+ });
+ }
+ };
+ assert.expect(6);
+ var route = this.subject();
+ route.set('store', store);
+ var model =
+ route.model({node_id:"localhost:64318", node_addr:"localhost:8042",
+ app_id:"application_1456251210105_0001"}).
+ then(
+ function(value){
+ assert.ok(value);
+ assert.ok(value.nodeApp);
+ assert.deepEqual(value.nodeApp, response);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ }
+ );
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-apps-test.js
new file mode 100644
index 0000000..44d9995
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-apps-test.js
@@ -0,0 +1,60 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-node-apps', 'Unit | Route | NodeApps', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting apps on a node', function(assert) {
+ var response = [
+ {id:"application_1456251210105_0001", state:"FINISHED", user:"root"},
+ {id:"application_1456251210105_0002", state:"RUNNING",user:"root",
+ containerids:["container_e38_1456251210105_0002_01_000001",
+ "container_e38_1456251210105_0002_01_000002"]}];
+ var store = {
+ query: function(type, query) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response.slice());
+ });
+ }
+ };
+ assert.expect(8);
+ var route = this.subject();
+ route.set('store', store);
+ var model =
+ route.model({node_id:"localhost:64318", node_addr:"localhost:8042"}).
+ then(
+ function(value){
+ assert.ok(value);
+ assert.ok(value.apps);
+ assert.equal(value.apps.length, 2);
+ assert.deepEqual(response[0], value.apps[0]);
+ assert.deepEqual(response[1], value.apps[1]);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ }
+ );
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-container-test.js
new file mode 100644
index 0000000..f0b68fc
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-container-test.js
@@ -0,0 +1,61 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-node-container', 'Unit | Route | NodeContainer', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting specific container on a node', function(assert) {
+ var response =
+ {id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
+ exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
+ totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
+ "containerlogs/container_e32_1456000363780_0002_01_000001/root",
+ nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
+ "stdout"]};
+ var store = {
+ queryRecord: function(type, query) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response);
+ });
+ }
+ };
+ assert.expect(6);
+ var route = this.subject();
+ route.set('store', store);
+ var model =
+ route.model({node_id:"localhost:64318", node_addr:"localhost:8042",
+ container_id:"container_e32_1456000363780_0002_01_000001"}).
+ then(
+ function(value){
+ assert.ok(value);
+ assert.ok(value.nodeContainer);
+ assert.deepEqual(value.nodeContainer, response);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ }
+ );
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-containers-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-containers-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-containers-test.js
new file mode 100644
index 0000000..8359713
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-containers-test.js
@@ -0,0 +1,68 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-node-containers', 'Unit | Route | NodeContainers', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting apps on a node', function(assert) {
+ var response =
+ [{id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
+ exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
+ totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
+ "containerlogs/container_e32_1456000363780_0002_01_000001/root",
+ nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
+ "stdout"]},
+ {id:"container_e32_1456000363780_0002_01_000003", state:"RUNNING",
+ exitCode:-1000, diagnostics:"", user:"root", totalMemoryNeededMB:1024,
+ totalVCoresNeeded:1,containerLogsLink:"http://localhost:8042/node" +
+ "/containerlogs/container_e32_1456000363780_0002_01_000003/root",
+ nodeId:"localhost:64318",containerLogFiles:["syslog","stderr",
+ "syslog.shuffle","stdout"]}];
+ var store = {
+ query: function(type, query) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response.slice());
+ });
+ }
+ };
+ assert.expect(8);
+ var route = this.subject();
+ route.set('store', store);
+ var model =
+ route.model({node_id:"localhost:64318", node_addr:"localhost:8042"}).
+ then(
+ function(value){
+ assert.ok(value);
+ assert.ok(value.containers);
+ assert.equal(value.containers.length, 2);
+ assert.deepEqual(value.containers[0], response[0]);
+ assert.deepEqual(value.containers[1], response[1]);
+ assert.ok(value.nodeInfo);
+ assert.equal(value.nodeInfo.addr, 'localhost:8042');
+ assert.equal(value.nodeInfo.id, 'localhost:64318');
+ }
+ );
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-test.js
new file mode 100644
index 0000000..4e82f1b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-test.js
@@ -0,0 +1,84 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Ember from 'ember';
+
+moduleFor('route:yarn-node', 'Unit | Route | Node', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting a node', function(assert) {
+ var nodeResponse =
+ {healthReport: "Healthy", totalVmemAllocatedContainersMB: 344064,
+ totalPmemAllocatedContainersMB: 163840,
+ totalVCoresAllocatedContainers: 160,
+ vmemCheckEnabled: true, pmemCheckEnabled: true,
+ lastNodeUpdateTime: 1456250210310, nodeHealthy: true,
+ nodeManagerVersion: "3.0.0-SNAPSHOT",
+ nodeManagerBuildVersion: "3.0.0-SNAPSHOT",
+ nodeManagerVersionBuiltOn: "2000-01-01T00:00Z",
+ hadoopVersion: "3.0.0-SNAPSHOT",
+ hadoopBuildVersion: "3.0.0-SNAPSHOT",
+ hadoopVersionBuiltOn: "2000-01-01T00:00Z",
+ id: "localhost:64318", nodeHostName: "192.168.0.102",
+ nmStartupTime: 1456250208231};
+ var rmNodeResponse =
+ {rack: "/default-rack", state: "RUNNING", id: "localhost:64318",
+ nodeHostName: "localhost", nodeHTTPAddress: "localhost:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 0,
+ availMemoryMB: 163840, usedVirtualCores: 0,
+ availableVirtualCores: 160,
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }};
+
+ // Create store which returns appropriate responses.
+ var store = {
+ findRecord: function(type) {
+ if (type == 'yarnNode') {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(nodeResponse);
+ });
+ } else if (type == 'yarnRmNode') {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(rmNodeResponse);
+ });
+ }
+ }
+ };
+ var route = this.subject();
+ assert.expect(4);
+ route.set('store', store);
+ var model = route.model(
+ {node_addr:"localhost:8042", node_id:"localhost:64318"})._result;
+ assert.ok(model.node);
+ assert.deepEqual(model.node, nodeResponse);
+ assert.ok(model.rmNode);
+ assert.deepEqual(model.rmNode, rmNodeResponse);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-nodes-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-nodes-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-nodes-test.js
new file mode 100644
index 0000000..baa5bd6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-nodes-test.js
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Ember from 'ember';
+
+moduleFor('route:yarn-nodes', 'Unit | Route | Nodes', {
+});
+
+test('Basic creation test', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+ assert.ok(route.model);
+});
+
+test('Test getting nodes', function(assert) {
+ var response = [{
+ rack: "/default-rack", state: "RUNNING", id: "192.168.1.1:64318",
+ nodeHostName: "192.168.1.1", nodeHTTPAddress: "192.168.1.1:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 0,
+ availMemoryMB: 163840, usedVirtualCores: 0,
+ availableVirtualCores: 160,
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }},
+ {rack: "/default-rack", state: "RUNNING", id: "192.168.1.2:64318",
+ nodeHostName: "192.168.1.2", nodeHTTPAddress: "192.168.1.2:8042",
+ lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
+ healthReport: "", numContainers: 0, usedMemoryMB: 0,
+ availMemoryMB: 163840, usedVirtualCores: 0,
+ availableVirtualCores: 160,
+ resourceUtilization: {
+ nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
+ nodeCPUUsage: 0.14995001256465912,
+ aggregatedContainersPhysicalMemoryMB: 0,
+ aggregatedContainersVirtualMemoryMB: 0,
+ containersCPUUsage: 0
+ }}];
+ var store = {
+ findAll: function(type) {
+ return new Ember.RSVP.Promise(function(resolve) {
+ resolve(response);
+ });
+ }
+ };
+ var route = this.subject();
+ route.set('store', store);
+ var model = route.model()._result;
+ assert.expect(4);
+ assert.ok(model);
+ assert.equal(model.length, 2);
+ assert.deepEqual(response[0], model[0]);
+ assert.deepEqual(response[1], model[1]);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-container-log-test.js
new file mode 100644
index 0000000..2349dc2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-container-log-test.js
@@ -0,0 +1,49 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('serializer:yarn-container-log', 'Unit | Serializer | ContainerLog', {
+});
+
+test('Basic creation test', function(assert) {
+ let serializer = this.subject();
+
+ assert.ok(serializer);
+ assert.ok(serializer.normalizeSingleResponse);
+});
+
+test('normalizeSingleResponse test', function(assert) {
+ let serializer = this.subject(),
+ modelClass = {
+ modelName: "yarn-container-log"
+ },
+ payload = "This is syslog";
+ var id = "localhost:64318!container_e32_1456000363780_0002_01_000001!syslog";
+ assert.expect(6);
+ var response =
+ serializer.normalizeSingleResponse({}, modelClass, payload, id, null);
+ assert.ok(response.data);
+ assert.equal(response.data.id, id);
+ assert.equal(response.data.type, modelClass.modelName);
+ assert.equal(response.data.attributes.logs, payload);
+ assert.equal(response.data.attributes.containerID,
+ "container_e32_1456000363780_0002_01_000001");
+ assert.equal(response.data.attributes.logFileName, "syslog");
+});
+
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[23/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup
code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Posted by su...@apache.org.
YARN-4849. [YARN-3368] cleanup code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/8c83bf4a
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/8c83bf4a
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/8c83bf4a
Branch: refs/heads/YARN-3368
Commit: 8c83bf4a42d3c1ae579ba4c16269acdf5b5df108
Parents: cfd86e6
Author: Wangda Tan <wa...@apache.org>
Authored: Mon Mar 21 14:03:13 2016 -0700
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.gitignore | 13 +
BUILDING.txt | 4 +-
LICENSE.txt | 80 +++++
dev-support/create-release.sh | 144 +++++++++
dev-support/docker/Dockerfile | 5 +
.../src/site/markdown/YarnUI2.md | 43 +++
.../hadoop-yarn/hadoop-yarn-ui/.bowerrc | 4 -
.../hadoop-yarn/hadoop-yarn-ui/.editorconfig | 34 ---
.../hadoop-yarn/hadoop-yarn-ui/.ember-cli | 11 -
.../hadoop-yarn/hadoop-yarn-ui/.gitignore | 17 --
.../hadoop-yarn/hadoop-yarn-ui/.jshintrc | 32 --
.../hadoop-yarn/hadoop-yarn-ui/.travis.yml | 23 --
.../hadoop-yarn/hadoop-yarn-ui/.watchmanconfig | 3 -
.../hadoop-yarn/hadoop-yarn-ui/README.md | 24 --
.../hadoop-yarn-ui/app/adapters/cluster-info.js | 20 --
.../app/adapters/cluster-metric.js | 20 --
.../app/adapters/yarn-app-attempt.js | 32 --
.../hadoop-yarn-ui/app/adapters/yarn-app.js | 26 --
.../app/adapters/yarn-container-log.js | 74 -----
.../app/adapters/yarn-container.js | 43 ---
.../app/adapters/yarn-node-app.js | 63 ----
.../app/adapters/yarn-node-container.js | 64 ----
.../hadoop-yarn-ui/app/adapters/yarn-node.js | 40 ---
.../hadoop-yarn-ui/app/adapters/yarn-queue.js | 20 --
.../hadoop-yarn-ui/app/adapters/yarn-rm-node.js | 45 ---
.../hadoop-yarn/hadoop-yarn-ui/app/app.js | 20 --
.../hadoop-yarn-ui/app/components/.gitkeep | 0
.../app/components/app-attempt-table.js | 4 -
.../hadoop-yarn-ui/app/components/app-table.js | 4 -
.../hadoop-yarn-ui/app/components/bar-chart.js | 104 -------
.../app/components/base-chart-component.js | 109 -------
.../app/components/container-table.js | 4 -
.../app/components/donut-chart.js | 148 ----------
.../app/components/item-selector.js | 21 --
.../app/components/queue-configuration-table.js | 4 -
.../app/components/queue-navigator.js | 4 -
.../hadoop-yarn-ui/app/components/queue-view.js | 272 -----------------
.../app/components/simple-table.js | 58 ----
.../app/components/timeline-view.js | 250 ----------------
.../app/components/tree-selector.js | 257 ----------------
.../hadoop-yarn/hadoop-yarn-ui/app/config.js | 27 --
.../hadoop-yarn/hadoop-yarn-ui/app/constants.js | 24 --
.../hadoop-yarn-ui/app/controllers/.gitkeep | 0
.../app/controllers/application.js | 55 ----
.../app/controllers/cluster-overview.js | 5 -
.../hadoop-yarn-ui/app/controllers/yarn-apps.js | 4 -
.../app/controllers/yarn-queue.js | 6 -
.../hadoop-yarn-ui/app/helpers/.gitkeep | 0
.../hadoop-yarn-ui/app/helpers/divide.js | 31 --
.../app/helpers/log-files-comma.js | 48 ---
.../hadoop-yarn-ui/app/helpers/node-link.js | 37 ---
.../hadoop-yarn-ui/app/helpers/node-menu.js | 66 -----
.../hadoop-yarn/hadoop-yarn-ui/app/index.html | 25 --
.../hadoop-yarn-ui/app/models/.gitkeep | 0
.../hadoop-yarn-ui/app/models/cluster-info.js | 13 -
.../hadoop-yarn-ui/app/models/cluster-metric.js | 115 --------
.../app/models/yarn-app-attempt.js | 44 ---
.../hadoop-yarn-ui/app/models/yarn-app.js | 65 -----
.../app/models/yarn-container-log.js | 25 --
.../hadoop-yarn-ui/app/models/yarn-container.js | 39 ---
.../hadoop-yarn-ui/app/models/yarn-node-app.js | 44 ---
.../app/models/yarn-node-container.js | 57 ----
.../hadoop-yarn-ui/app/models/yarn-node.js | 33 ---
.../hadoop-yarn-ui/app/models/yarn-queue.js | 76 -----
.../hadoop-yarn-ui/app/models/yarn-rm-node.js | 92 ------
.../hadoop-yarn-ui/app/models/yarn-user.js | 8 -
.../hadoop-yarn/hadoop-yarn-ui/app/router.js | 29 --
.../hadoop-yarn-ui/app/routes/.gitkeep | 0
.../hadoop-yarn-ui/app/routes/application.js | 38 ---
.../app/routes/cluster-overview.js | 11 -
.../hadoop-yarn-ui/app/routes/index.js | 29 --
.../app/routes/yarn-app-attempt.js | 21 --
.../hadoop-yarn-ui/app/routes/yarn-app.js | 10 -
.../hadoop-yarn-ui/app/routes/yarn-apps.js | 8 -
.../app/routes/yarn-container-log.js | 55 ----
.../hadoop-yarn-ui/app/routes/yarn-node-app.js | 29 --
.../hadoop-yarn-ui/app/routes/yarn-node-apps.js | 29 --
.../app/routes/yarn-node-container.js | 30 --
.../app/routes/yarn-node-containers.js | 28 --
.../hadoop-yarn-ui/app/routes/yarn-node.js | 29 --
.../hadoop-yarn-ui/app/routes/yarn-nodes.js | 25 --
.../hadoop-yarn-ui/app/routes/yarn-queue.js | 20 --
.../app/routes/yarn-queues/index.js | 5 -
.../app/routes/yarn-queues/queues-selector.js | 7 -
.../app/serializers/cluster-info.js | 29 --
.../app/serializers/cluster-metric.js | 29 --
.../app/serializers/yarn-app-attempt.js | 49 ----
.../hadoop-yarn-ui/app/serializers/yarn-app.js | 66 -----
.../app/serializers/yarn-container-log.js | 39 ---
.../app/serializers/yarn-container.js | 54 ----
.../app/serializers/yarn-node-app.js | 86 ------
.../app/serializers/yarn-node-container.js | 74 -----
.../hadoop-yarn-ui/app/serializers/yarn-node.js | 56 ----
.../app/serializers/yarn-queue.js | 127 --------
.../app/serializers/yarn-rm-node.js | 77 -----
.../hadoop-yarn-ui/app/styles/app.css | 141 ---------
.../app/templates/application.hbs | 23 --
.../app/templates/cluster-overview.hbs | 56 ----
.../app/templates/components/.gitkeep | 0
.../templates/components/app-attempt-table.hbs | 28 --
.../app/templates/components/app-table.hbs | 62 ----
.../templates/components/container-table.hbs | 36 ---
.../components/queue-configuration-table.hbs | 40 ---
.../templates/components/queue-navigator.hbs | 18 --
.../app/templates/components/timeline-view.hbs | 35 ---
.../hadoop-yarn-ui/app/templates/error.hbs | 19 --
.../hadoop-yarn-ui/app/templates/notfound.hbs | 20 --
.../app/templates/yarn-app-attempt.hbs | 12 -
.../hadoop-yarn-ui/app/templates/yarn-app.hbs | 145 ----------
.../hadoop-yarn-ui/app/templates/yarn-apps.hbs | 3 -
.../app/templates/yarn-container-log.hbs | 36 ---
.../app/templates/yarn-node-app.hbs | 60 ----
.../app/templates/yarn-node-apps.hbs | 51 ----
.../app/templates/yarn-node-container.hbs | 70 -----
.../app/templates/yarn-node-containers.hbs | 58 ----
.../hadoop-yarn-ui/app/templates/yarn-node.hbs | 94 ------
.../hadoop-yarn-ui/app/templates/yarn-nodes.hbs | 65 -----
.../hadoop-yarn-ui/app/templates/yarn-queue.hbs | 48 ---
.../hadoop-yarn-ui/app/utils/converter.js | 91 ------
.../hadoop-yarn-ui/app/utils/sorter.js | 55 ----
.../hadoop-yarn/hadoop-yarn-ui/bower.json | 22 --
.../hadoop-yarn-ui/config/environment.js | 46 ---
.../hadoop-yarn-ui/ember-cli-build.js | 29 --
.../hadoop-yarn/hadoop-yarn-ui/jsconfig.json | 6 -
.../hadoop-yarn/hadoop-yarn-ui/package.json | 44 ---
.../hadoop-yarn/hadoop-yarn-ui/pom.xml | 207 +++++++++++++
.../hadoop-yarn-ui/public/robots.txt | 3 -
.../src/main/webapp/WEB-INF/web.xml | 25 ++
.../main/webapp/app/adapters/cluster-info.js | 38 +++
.../main/webapp/app/adapters/cluster-metric.js | 38 +++
.../webapp/app/adapters/yarn-app-attempt.js | 50 ++++
.../src/main/webapp/app/adapters/yarn-app.js | 44 +++
.../webapp/app/adapters/yarn-container-log.js | 74 +++++
.../main/webapp/app/adapters/yarn-container.js | 61 ++++
.../main/webapp/app/adapters/yarn-node-app.js | 63 ++++
.../webapp/app/adapters/yarn-node-container.js | 64 ++++
.../src/main/webapp/app/adapters/yarn-node.js | 40 +++
.../src/main/webapp/app/adapters/yarn-queue.js | 38 +++
.../main/webapp/app/adapters/yarn-rm-node.js | 45 +++
.../hadoop-yarn-ui/src/main/webapp/app/app.js | 38 +++
.../webapp/app/components/app-attempt-table.js | 22 ++
.../src/main/webapp/app/components/app-table.js | 22 ++
.../src/main/webapp/app/components/bar-chart.js | 122 ++++++++
.../app/components/base-chart-component.js | 127 ++++++++
.../webapp/app/components/container-table.js | 22 ++
.../main/webapp/app/components/donut-chart.js | 166 +++++++++++
.../main/webapp/app/components/item-selector.js | 39 +++
.../app/components/queue-configuration-table.js | 22 ++
.../webapp/app/components/queue-navigator.js | 22 ++
.../main/webapp/app/components/queue-view.js | 290 +++++++++++++++++++
.../main/webapp/app/components/simple-table.js | 76 +++++
.../main/webapp/app/components/timeline-view.js | 268 +++++++++++++++++
.../main/webapp/app/components/tree-selector.js | 275 ++++++++++++++++++
.../src/main/webapp/app/config.js | 27 ++
.../src/main/webapp/app/constants.js | 24 ++
.../main/webapp/app/controllers/application.js | 55 ++++
.../webapp/app/controllers/cluster-overview.js | 23 ++
.../main/webapp/app/controllers/yarn-apps.js | 22 ++
.../main/webapp/app/controllers/yarn-queue.js | 24 ++
.../src/main/webapp/app/helpers/divide.js | 31 ++
.../main/webapp/app/helpers/log-files-comma.js | 48 +++
.../src/main/webapp/app/helpers/node-link.js | 37 +++
.../src/main/webapp/app/helpers/node-menu.js | 66 +++++
.../src/main/webapp/app/index.html | 43 +++
.../src/main/webapp/app/models/cluster-info.js | 31 ++
.../main/webapp/app/models/cluster-metric.js | 133 +++++++++
.../main/webapp/app/models/yarn-app-attempt.js | 62 ++++
.../src/main/webapp/app/models/yarn-app.js | 83 ++++++
.../webapp/app/models/yarn-container-log.js | 25 ++
.../main/webapp/app/models/yarn-container.js | 57 ++++
.../src/main/webapp/app/models/yarn-node-app.js | 44 +++
.../webapp/app/models/yarn-node-container.js | 57 ++++
.../src/main/webapp/app/models/yarn-node.js | 33 +++
.../src/main/webapp/app/models/yarn-queue.js | 94 ++++++
.../src/main/webapp/app/models/yarn-rm-node.js | 92 ++++++
.../src/main/webapp/app/models/yarn-user.js | 26 ++
.../src/main/webapp/app/router.js | 47 +++
.../src/main/webapp/app/routes/application.js | 38 +++
.../main/webapp/app/routes/cluster-overview.js | 29 ++
.../src/main/webapp/app/routes/index.js | 29 ++
.../main/webapp/app/routes/yarn-app-attempt.js | 39 +++
.../src/main/webapp/app/routes/yarn-app.js | 28 ++
.../src/main/webapp/app/routes/yarn-apps.js | 26 ++
.../webapp/app/routes/yarn-container-log.js | 55 ++++
.../src/main/webapp/app/routes/yarn-node-app.js | 29 ++
.../main/webapp/app/routes/yarn-node-apps.js | 29 ++
.../webapp/app/routes/yarn-node-container.js | 30 ++
.../webapp/app/routes/yarn-node-containers.js | 28 ++
.../src/main/webapp/app/routes/yarn-node.js | 29 ++
.../src/main/webapp/app/routes/yarn-nodes.js | 25 ++
.../src/main/webapp/app/routes/yarn-queue.js | 38 +++
.../main/webapp/app/routes/yarn-queues/index.js | 23 ++
.../app/routes/yarn-queues/queues-selector.js | 25 ++
.../main/webapp/app/serializers/cluster-info.js | 47 +++
.../webapp/app/serializers/cluster-metric.js | 47 +++
.../webapp/app/serializers/yarn-app-attempt.js | 67 +++++
.../src/main/webapp/app/serializers/yarn-app.js | 84 ++++++
.../app/serializers/yarn-container-log.js | 39 +++
.../webapp/app/serializers/yarn-container.js | 72 +++++
.../webapp/app/serializers/yarn-node-app.js | 86 ++++++
.../app/serializers/yarn-node-container.js | 74 +++++
.../main/webapp/app/serializers/yarn-node.js | 56 ++++
.../main/webapp/app/serializers/yarn-queue.js | 145 ++++++++++
.../main/webapp/app/serializers/yarn-rm-node.js | 77 +++++
.../src/main/webapp/app/styles/app.css | 159 ++++++++++
.../main/webapp/app/templates/application.hbs | 41 +++
.../webapp/app/templates/cluster-overview.hbs | 74 +++++
.../templates/components/app-attempt-table.hbs | 46 +++
.../app/templates/components/app-table.hbs | 80 +++++
.../templates/components/container-table.hbs | 54 ++++
.../components/queue-configuration-table.hbs | 58 ++++
.../templates/components/queue-navigator.hbs | 36 +++
.../app/templates/components/timeline-view.hbs | 53 ++++
.../src/main/webapp/app/templates/error.hbs | 19 ++
.../src/main/webapp/app/templates/notfound.hbs | 20 ++
.../webapp/app/templates/yarn-app-attempt.hbs | 30 ++
.../src/main/webapp/app/templates/yarn-app.hbs | 163 +++++++++++
.../src/main/webapp/app/templates/yarn-apps.hbs | 21 ++
.../webapp/app/templates/yarn-container-log.hbs | 36 +++
.../main/webapp/app/templates/yarn-node-app.hbs | 60 ++++
.../webapp/app/templates/yarn-node-apps.hbs | 51 ++++
.../app/templates/yarn-node-container.hbs | 70 +++++
.../app/templates/yarn-node-containers.hbs | 58 ++++
.../src/main/webapp/app/templates/yarn-node.hbs | 94 ++++++
.../main/webapp/app/templates/yarn-nodes.hbs | 65 +++++
.../main/webapp/app/templates/yarn-queue.hbs | 66 +++++
.../src/main/webapp/app/utils/converter.js | 109 +++++++
.../src/main/webapp/app/utils/sorter.js | 73 +++++
.../hadoop-yarn-ui/src/main/webapp/bower.json | 22 ++
.../src/main/webapp/config/environment.js | 65 +++++
.../src/main/webapp/ember-cli-build.js | 47 +++
.../src/main/webapp/jsconfig.json | 6 +
.../hadoop-yarn-ui/src/main/webapp/package.json | 44 +++
.../assets/images/datatables/Sorting icons.psd | Bin 0 -> 27490 bytes
.../public/assets/images/datatables/favicon.ico | Bin 0 -> 894 bytes
.../assets/images/datatables/sort_asc.png | Bin 0 -> 160 bytes
.../images/datatables/sort_asc_disabled.png | Bin 0 -> 148 bytes
.../assets/images/datatables/sort_both.png | Bin 0 -> 201 bytes
.../assets/images/datatables/sort_desc.png | Bin 0 -> 158 bytes
.../images/datatables/sort_desc_disabled.png | Bin 0 -> 146 bytes
.../src/main/webapp/public/crossdomain.xml | 34 +++
.../hadoop-yarn-ui/src/main/webapp/testem.json | 12 +
.../src/main/webapp/tests/helpers/resolver.js | 29 ++
.../src/main/webapp/tests/helpers/start-app.js | 36 +++
.../src/main/webapp/tests/index.html | 51 ++++
.../src/main/webapp/tests/test-helper.js | 24 ++
.../webapp/tests/unit/adapters/yarn-app-test.js | 30 ++
.../unit/adapters/yarn-container-log-test.js | 73 +++++
.../tests/unit/adapters/yarn-node-app-test.js | 93 ++++++
.../unit/adapters/yarn-node-container-test.js | 93 ++++++
.../tests/unit/adapters/yarn-node-test.js | 42 +++
.../tests/unit/adapters/yarn-rm-node-test.js | 44 +++
.../tests/unit/controllers/yarn-apps-test.js | 30 ++
.../tests/unit/controllers/yarn-queues-test.js | 30 ++
.../webapp/tests/unit/mixins/charts-test.js | 30 ++
.../webapp/tests/unit/models/yarn-app-test.js | 30 ++
.../unit/models/yarn-container-log-test.js | 48 +++
.../tests/unit/models/yarn-node-app-test.js | 65 +++++
.../unit/models/yarn-node-container-test.js | 78 +++++
.../webapp/tests/unit/models/yarn-node-test.js | 58 ++++
.../tests/unit/models/yarn-rm-node-test.js | 95 ++++++
.../webapp/tests/unit/routes/yarn-apps-test.js | 29 ++
.../unit/routes/yarn-container-log-test.js | 120 ++++++++
.../tests/unit/routes/yarn-node-app-test.js | 56 ++++
.../tests/unit/routes/yarn-node-apps-test.js | 60 ++++
.../unit/routes/yarn-node-container-test.js | 61 ++++
.../unit/routes/yarn-node-containers-test.js | 68 +++++
.../webapp/tests/unit/routes/yarn-node-test.js | 84 ++++++
.../webapp/tests/unit/routes/yarn-nodes-test.js | 74 +++++
.../tests/unit/serializers/yarn-app-test.js | 33 +++
.../unit/serializers/yarn-container-log-test.js | 49 ++++
.../unit/serializers/yarn-node-app-test.js | 102 +++++++
.../serializers/yarn-node-container-test.js | 128 ++++++++
.../tests/unit/serializers/yarn-node-test.js | 69 +++++
.../tests/unit/serializers/yarn-rm-node-test.js | 153 ++++++++++
.../webapp/tests/unit/utils/converter-test.js | 52 ++++
.../main/webapp/tests/unit/utils/sorter-test.js | 26 ++
.../hadoop-yarn/hadoop-yarn-ui/testem.json | 12 -
.../hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc | 52 ----
.../hadoop-yarn-ui/tests/helpers/resolver.js | 11 -
.../hadoop-yarn-ui/tests/helpers/start-app.js | 18 --
.../hadoop-yarn/hadoop-yarn-ui/tests/index.html | 33 ---
.../hadoop-yarn-ui/tests/test-helper.js | 6 -
.../hadoop-yarn-ui/tests/unit/.gitkeep | 0
.../tests/unit/adapters/yarn-app-test.js | 12 -
.../unit/adapters/yarn-container-log-test.js | 73 -----
.../tests/unit/adapters/yarn-node-app-test.js | 93 ------
.../unit/adapters/yarn-node-container-test.js | 93 ------
.../tests/unit/adapters/yarn-node-test.js | 42 ---
.../tests/unit/adapters/yarn-rm-node-test.js | 44 ---
.../tests/unit/controllers/yarn-apps-test.js | 12 -
.../tests/unit/controllers/yarn-queues-test.js | 12 -
.../tests/unit/mixins/charts-test.js | 12 -
.../tests/unit/models/yarn-app-test.js | 12 -
.../unit/models/yarn-container-log-test.js | 48 ---
.../tests/unit/models/yarn-node-app-test.js | 65 -----
.../unit/models/yarn-node-container-test.js | 78 -----
.../tests/unit/models/yarn-node-test.js | 58 ----
.../tests/unit/models/yarn-rm-node-test.js | 95 ------
.../tests/unit/routes/yarn-apps-test.js | 11 -
.../unit/routes/yarn-container-log-test.js | 120 --------
.../tests/unit/routes/yarn-node-app-test.js | 56 ----
.../tests/unit/routes/yarn-node-apps-test.js | 60 ----
.../unit/routes/yarn-node-container-test.js | 61 ----
.../unit/routes/yarn-node-containers-test.js | 68 -----
.../tests/unit/routes/yarn-node-test.js | 84 ------
.../tests/unit/routes/yarn-nodes-test.js | 74 -----
.../tests/unit/serializers/yarn-app-test.js | 15 -
.../unit/serializers/yarn-container-log-test.js | 49 ----
.../unit/serializers/yarn-node-app-test.js | 102 -------
.../serializers/yarn-node-container-test.js | 128 --------
.../tests/unit/serializers/yarn-node-test.js | 69 -----
.../tests/unit/serializers/yarn-rm-node-test.js | 153 ----------
.../tests/unit/utils/converter-test.js | 52 ----
.../tests/unit/utils/sorter-test.js | 26 --
.../hadoop-yarn/hadoop-yarn-ui/vendor/.gitkeep | 0
hadoop-yarn-project/hadoop-yarn/pom.xml | 1 +
317 files changed, 8974 insertions(+), 7308 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index cbecfc0..792f725 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,6 +26,19 @@ hadoop-hdfs-project/hadoop-hdfs-httpfs/downloads
hadoop-common-project/hadoop-common/src/test/resources/contract-test-options.xml
hadoop-tools/hadoop-openstack/src/test/resources/contract-test-options.xml
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/tla/yarnregistry.toolbox
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/dist
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tmp
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/node
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/node_modules
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower_components
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.sass-cache
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/connect.lock
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/coverage/*
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/libpeerconnection.log
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webappnpm-debug.log
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapptestem.log
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/dist
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tmp
yarnregistry.pdf
hadoop-tools/hadoop-aws/src/test/resources/auth-keys.xml
hadoop-tools/hadoop-aws/src/test/resources/contract-test-options.xml
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/BUILDING.txt
----------------------------------------------------------------------
diff --git a/BUILDING.txt b/BUILDING.txt
index 1fbf8bb..527e5cf 100644
--- a/BUILDING.txt
+++ b/BUILDING.txt
@@ -15,6 +15,7 @@ Requirements:
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
* python (for releasedocs)
* bats (for shell code testing)
+* Node.js / bower / Ember-cli (for YARN UI v2 building)
----------------------------------------------------------------------------------
The easiest way to get an environment with all the appropriate tools is by means
@@ -119,7 +120,7 @@ Maven build goals:
* Run clover : mvn test -Pclover [-DcloverLicenseLocation=${user.name}/.clover.license]
* Run Rat : mvn apache-rat:check
* Build javadocs : mvn javadoc:javadoc
- * Build distribution : mvn package [-Pdist][-Pdocs][-Psrc][-Pnative][-Dtar][-Preleasedocs]
+ * Build distribution : mvn package [-Pdist][-Pdocs][-Psrc][-Pnative][-Dtar][-Preleasedocs][-Pyarn-ui]
* Change Hadoop version : mvn versions:set -DnewVersion=NEWVERSION
Build options:
@@ -129,6 +130,7 @@ Maven build goals:
* Use -Psrc to create a project source TAR.GZ
* Use -Dtar to create a TAR with the distribution (using -Pdist)
* Use -Preleasedocs to include the changelog and release docs (requires Internet connectivity)
+ * Use -Pyarn-ui to build YARN UI v2. (Requires Internet connectivity, and it is for dev use only)
Snappy build options:
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/LICENSE.txt
----------------------------------------------------------------------
diff --git a/LICENSE.txt b/LICENSE.txt
index 252968f..e3a4c34 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -2314,3 +2314,83 @@ jamon-runtime 2.3.1
Developer permits you to utilize portions of the Covered Code under
Your choice of the MPL or the alternative licenses, if any, specified
by the Initial Developer in the file described in Exhibit A.
+
+For Apache Hadoop YARN Web UI component: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/
+---------------------------------------------------------------------
+The Apache Hadoop YARN Web UI component bundles the following files under the MIT License:
+
+ - ember v2.2.0 (http://emberjs.com/) - Copyright (c) 2014 Yehuda Katz, Tom Dale and Ember.js contributors
+ - ember-data v2.1.0 (https://github.com/emberjs/data) - Copyright (C) 2011-2014 Tilde, Inc. and contributors, Portions Copyright (C) 2011 LivingSocial Inc.
+ - ember-resolver v2.0.3 (https://github.com/ember-cli/ember-resolver) - Copyright (c) 2013 Stefan Penner and Ember App Kit Contributors
+ - bootstrap v3.3.6 (http://getbootstrap.com) - Copyright (c) 2011-2014 Twitter, Inc
+ - jquery v2.1.4 (http://jquery.org) - Copyright 2005, 2014 jQuery Foundation and other contributors
+ - jquery-ui v1.11.4 (http://jqueryui.com/) - Copyright 2014 jQuery Foundation and other contributors
+ - datatables v1.10.8 (https://datatables.net/)
+ - moment v2.10.6 (http://momentjs.com/) - Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors
+ - em-helpers v0.5.8 (https://github.com/sreenaths/em-helpers)
+ - ember-cli-app-version v0.5.8 (https://github.com/EmberSherpa/ember-cli-app-version) - Authored by Taras Mankovski <ta...@gmail.com>
+ - ember-cli-babel v5.1.6 (https://github.com/babel/ember-cli-babel) - Authored by Stefan Penner <st...@gmail.com>
+ - ember-cli-content-security-policy v0.4.0 (https://github.com/rwjblue/ember-cli-content-security-policy)
+ - ember-cli-dependency-checker v1.2.0 (https://github.com/quaertym/ember-cli-dependency-checker) - Authored by Emre Unal
+ - ember-cli-htmlbars v1.0.2 (https://github.com/ember-cli/ember-cli-htmlbars) - Authored by Robert Jackson <me...@rwjblue.com>
+ - ember-cli-htmlbars-inline-precompile v0.3.1 (https://github.com/pangratz/ember-cli-htmlbars-inline-precompile) - Authored by Clemens M�ller <cm...@gmail.com>
+ - ember-cli-ic-ajax v0.2.1 (https://github.com/rwjblue/ember-cli-ic-ajax) - Authored by Robert Jackson <me...@rwjblue.com>
+ - ember-cli-inject-live-reload v1.4.0 (https://github.com/rwjblue/ember-cli-inject-live-reload) - Authored by Robert Jackson <me...@rwjblue.com>
+ - ember-cli-qunit v1.2.1 (https://github.com/ember-cli/ember-cli-qunit) - Authored by Robert Jackson <me...@rwjblue.com>
+ - ember-cli-release v0.2.8 (https://github.com/lytics/ember-cli-release) - Authored by Robert Jackson <me...@rwjblue.com>
+ - ember-cli-sri v1.2.1 (https://github.com/jonathanKingston/ember-cli-sri) - Authored by Jonathan Kingston
+ - ember-cli-uglify v1.2.0 (github.com/ember-cli/ember-cli-uglify) - Authored by Robert Jackson <me...@rwjblue.com>
+ - ember-d3 v0.1.0 (https://github.com/brzpegasus/ember-d3) - Authored by Estelle DeBlois
+ - select2 v4.0.0 (https://select2.github.io/)
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and assocated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+----
+The Apache Hadoop YARN Web UI component bundles the following files under the BSD License:
+
+(3-clause BSD license)
+ - D3 v3.5.6 (http://d3js.org/) - Copyright (c) 2010-2014, Michael Bostock
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list
+ of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/dev-support/create-release.sh
----------------------------------------------------------------------
diff --git a/dev-support/create-release.sh b/dev-support/create-release.sh
new file mode 100755
index 0000000..792a805
--- /dev/null
+++ b/dev-support/create-release.sh
@@ -0,0 +1,144 @@
+#!/bin/bash
+# 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.
+
+
+# Function to probe the exit code of the script commands,
+# and stop in the case of failure with an contextual error
+# message.
+run() {
+ echo "\$ ${@}"
+ "${@}"
+ exitCode=$?
+ if [[ $exitCode != 0 ]]; then
+ echo
+ echo "Failed! running ${@} in `pwd`"
+ echo
+ exit $exitCode
+ fi
+}
+
+doMD5() {
+ MD5CMD="md5sum"
+ which $MD5CMD
+ if [[ $? != 0 ]]; then
+ MD5CMD="md5"
+ fi
+ run $MD5CMD ${1} > ${1}.md5
+}
+
+# If provided, the created release artifacts will be tagged with it
+# (use RC#, i.e: RC0). Do not use a label to create the final release
+# artifact.
+RC_LABEL=$1
+
+# Extract Hadoop version from POM
+HADOOP_VERSION=`cat pom.xml | grep "<version>" | head -1 | sed 's|^ *<version>||' | sed 's|</version>.*$||'`
+
+# Setup git
+GIT=${GIT:-git}
+
+echo
+echo "*****************************************************************"
+echo
+echo "Hadoop version to create release artifacts: ${HADOOP_VERSION}"
+echo
+echo "Release Candidate Label: ${RC_LABEL}"
+echo
+echo "*****************************************************************"
+echo
+
+if [[ ! -z ${RC_LABEL} ]]; then
+ RC_LABEL="-${RC_LABEL}"
+fi
+
+# Get Maven command
+if [ -z "$MAVEN_HOME" ]; then
+ MVN=mvn
+else
+ MVN=$MAVEN_HOME/bin/mvn
+fi
+
+ARTIFACTS_DIR="target/artifacts"
+
+# git clean to clear any remnants from previous build
+run ${GIT} clean -xdf
+
+# mvn clean for sanity
+run ${MVN} clean
+
+# Create staging dir for release artifacts
+run mkdir -p ${ARTIFACTS_DIR}
+
+# Create RAT report
+run ${MVN} apache-rat:check
+
+# Create SRC and BIN tarballs for release,
+# Using 'install\u2019 goal instead of 'package' so artifacts are available
+# in the Maven local cache for the site generation
+run ${MVN} install -Pdist,src,native,yarn-ui -DskipTests -Dtar
+
+# Create site for release
+run ${MVN} site site:stage -Pdist -Psrc
+run mkdir -p target/staging/hadoop-project/hadoop-project-dist/hadoop-yarn
+run mkdir -p target/staging/hadoop-project/hadoop-project-dist/hadoop-mapreduce
+run cp ./hadoop-common-project/hadoop-common/src/main/docs/releasenotes.html target/staging/hadoop-project/hadoop-project-dist/hadoop-common/
+run cp ./hadoop-common-project/hadoop-common/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-common/
+run cp ./hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-hdfs/
+run cp ./hadoop-yarn-project/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-yarn/
+run cp ./hadoop-mapreduce-project/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-mapreduce/
+run mv target/staging/hadoop-project target/r${HADOOP_VERSION}/
+run cd target/
+run tar czf hadoop-site-${HADOOP_VERSION}.tar.gz r${HADOOP_VERSION}/*
+run cd ..
+
+# Stage RAT report
+find . -name rat.txt | xargs -I% cat % > ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}-rat.txt
+
+# Stage CHANGES.txt files
+run cp ./hadoop-common-project/hadoop-common/CHANGES.txt ${ARTIFACTS_DIR}/CHANGES-COMMON-${HADOOP_VERSION}${RC_LABEL}.txt
+run cp ./hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ${ARTIFACTS_DIR}/CHANGES-HDFS-${HADOOP_VERSION}${RC_LABEL}.txt
+run cp ./hadoop-mapreduce-project/CHANGES.txt ${ARTIFACTS_DIR}/CHANGES-MAPREDUCE-${HADOOP_VERSION}${RC_LABEL}.txt
+run cp ./hadoop-yarn-project/CHANGES.txt ${ARTIFACTS_DIR}/CHANGES-YARN-${HADOOP_VERSION}${RC_LABEL}.txt
+
+# Prepare and stage BIN tarball
+run cd hadoop-dist/target/
+run tar -xzf hadoop-${HADOOP_VERSION}.tar.gz
+run cp -r ../../target/r${HADOOP_VERSION}/* hadoop-${HADOOP_VERSION}/share/doc/hadoop/
+run tar -czf hadoop-${HADOOP_VERSION}.tar.gz hadoop-${HADOOP_VERSION}
+run cd ../..
+run mv hadoop-dist/target/hadoop-${HADOOP_VERSION}.tar.gz ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}.tar.gz
+
+# Stage SRC tarball
+run mv hadoop-dist/target/hadoop-${HADOOP_VERSION}-src.tar.gz ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}-src.tar.gz
+
+# Stage SITE tarball
+run mv target/hadoop-site-${HADOOP_VERSION}.tar.gz ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}-site.tar.gz
+
+# MD5 SRC and BIN tarballs
+doMD5 ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}.tar.gz
+doMD5 ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}-src.tar.gz
+
+run cd ${ARTIFACTS_DIR}
+ARTIFACTS_DIR=`pwd`
+echo
+echo "Congratulations, you have successfully built the release"
+echo "artifacts for Apache Hadoop ${HADOOP_VERSION}${RC_LABEL}"
+echo
+echo "The artifacts for this run are available at ${ARTIFACTS_DIR}:"
+run ls -1 ${ARTIFACTS_DIR}
+echo
+echo "Remember to sign them before staging them on the open"
+echo
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/dev-support/docker/Dockerfile
----------------------------------------------------------------------
diff --git a/dev-support/docker/Dockerfile b/dev-support/docker/Dockerfile
index 5a7f85a..e66fef2 100644
--- a/dev-support/docker/Dockerfile
+++ b/dev-support/docker/Dockerfile
@@ -133,6 +133,11 @@ RUN pip install python-dateutil
ENV MAVEN_OPTS -Xms256m -Xmx512m
###
+# Install node js tools for web UI frameowkr
+###
+RUN apt-get -y install nodejs && ln -s /usr/bin/nodejs /usr/bin/node && apt-get -y install npm && npm install -g bower
+
+###
# Everything past this point is either not needed for testing or breaks Yetus.
# So tell Yetus not to read the rest of the file:
# YETUS CUT HERE
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
new file mode 100644
index 0000000..575ebc7
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
@@ -0,0 +1,43 @@
+<!--
+ 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.
+-->
+
+Hadoop: YARN-UI V2
+=================
+*This is a WIP project, nobody should use it in production.*
+
+Prerequisites
+-------------
+
+You will need the following things properly installed on your computer.
+
+* Install Node.js with NPM: https://nodejs.org/download/
+* After Node.js installed, install bower: `npm install -g bower`.
+* Install Ember-cli: `npm install -g ember-cli`
+
+BUILD
+----
+* Please refer to BUILDING.txt in the top directory and pass -Pyarn-ui to build UI-related code
+* Execute `mvn test -Pyarn-ui` to run unit tests
+
+Try it
+------
+
+* Packaging and deploying Hadoop in this branch
+* In `hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js`, change `timelineWebUrl` and `rmWebUrl` to your YARN RM/Timeline server web address.
+* If you are running YARN RM in your localhost, you should update `localBaseUrl` to `localhost:1337/`, install `npm install -g corsproxy` and run `corsproxy` to avoid CORS errors. More details: `https://www.npmjs.com/package/corsproxy`.
+* Run `ember serve` under `hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/`
+* Visit your app at [http://localhost:4200](http://localhost:4200).
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.bowerrc
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.bowerrc b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.bowerrc
deleted file mode 100644
index 959e169..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.bowerrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "directory": "bower_components",
- "analytics": false
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.editorconfig
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.editorconfig b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.editorconfig
deleted file mode 100644
index 47c5438..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.editorconfig
+++ /dev/null
@@ -1,34 +0,0 @@
-# EditorConfig helps developers define and maintain consistent
-# coding styles between different editors and IDEs
-# editorconfig.org
-
-root = true
-
-
-[*]
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-indent_style = space
-indent_size = 2
-
-[*.js]
-indent_style = space
-indent_size = 2
-
-[*.hbs]
-insert_final_newline = false
-indent_style = space
-indent_size = 2
-
-[*.css]
-indent_style = space
-indent_size = 2
-
-[*.html]
-indent_style = space
-indent_size = 2
-
-[*.{diff,md}]
-trim_trailing_whitespace = false
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.ember-cli
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.ember-cli b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.ember-cli
deleted file mode 100644
index 96bd287..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.ember-cli
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- /**
- Ember CLI sends analytics information by default. The data is completely
- anonymous, but there are times when you might want to disable this behavior.
-
- Setting `disableAnalytics` to true will prevent any data from being sent.
- */
- "disableAnalytics": false,
- "liveReload": true,
- "watcher": "polling"
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.gitignore
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.gitignore b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.gitignore
deleted file mode 100644
index 86fceae..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.gitignore
+++ /dev/null
@@ -1,17 +0,0 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-
-# compiled output
-/dist
-/tmp
-
-# dependencies
-/node_modules
-/bower_components
-
-# misc
-/.sass-cache
-/connect.lock
-/coverage/*
-/libpeerconnection.log
-npm-debug.log
-testem.log
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.jshintrc
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.jshintrc b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.jshintrc
deleted file mode 100644
index 08096ef..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.jshintrc
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "predef": [
- "document",
- "window",
- "-Promise"
- ],
- "browser": true,
- "boss": true,
- "curly": true,
- "debug": false,
- "devel": true,
- "eqeqeq": true,
- "evil": true,
- "forin": false,
- "immed": false,
- "laxbreak": false,
- "newcap": true,
- "noarg": true,
- "noempty": false,
- "nonew": false,
- "nomen": false,
- "onevar": false,
- "plusplus": false,
- "regexp": false,
- "undef": true,
- "sub": true,
- "strict": false,
- "white": false,
- "eqnull": true,
- "esnext": true,
- "unused": true
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.travis.yml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.travis.yml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.travis.yml
deleted file mode 100644
index 66dd107..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.travis.yml
+++ /dev/null
@@ -1,23 +0,0 @@
----
-language: node_js
-node_js:
- - "0.12"
-
-sudo: false
-
-cache:
- directories:
- - node_modules
-
-before_install:
- - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH
- - "npm config set spin false"
- - "npm install -g npm@^2"
-
-install:
- - npm install -g bower
- - npm install
- - bower install
-
-script:
- - npm test
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.watchmanconfig
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.watchmanconfig b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.watchmanconfig
deleted file mode 100644
index 5e9462c..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.watchmanconfig
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "ignore_dirs": ["tmp"]
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/README.md
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/README.md b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/README.md
deleted file mode 100644
index d5cba6e..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Yarn-ui
-*This is a WIP project, nobody should use it in production.*
-
-## Prerequisites
-
-You will need the following things properly installed on your computer.
-
-* Install Node.js with NPM: https://nodejs.org/download/
-* After Node.js installed, install bower: `npm install -g bower`.
-* Install Ember-cli: `npm install -g ember-cli`
-
-## Installation
-
-* Goto root directory of yarn-ui project: `hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui`
-* `npm install && bower install`, it will take a while to finish.
-
-## Try it
-
-* Packaging and deploying Hadoop in this branch (You can use latest trunk after YARN-4417 committed to trunk)
-* Modify `app/adapters/yarn-app.js`, change `host` to your YARN RM web address
-* If you running YARN RM in your localhost, you should install `npm install -g corsproxy` and run `corsproxy` to avoid CORS errors. More details: `https://www.npmjs.com/package/corsproxy`. And the `host` of `app/adapters/yarn-app.js` should start with `localhost:1337`.
-* Run `ember server`
-* Visit your app at [http://localhost:4200](http://localhost:4200).
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
deleted file mode 100644
index 5a0d2d3..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster', // common const
- pathForType(modelName) {
- return ''; // move to some common place, return path by modelname.
- },
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
deleted file mode 100644
index d392c9b..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster/metrics', // common const
- pathForType(modelName) {
- return ''; // move to some common place, return path by modelname.
- },
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
deleted file mode 100644
index 4e40744..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-import Config from 'yarn-ui/config';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster', // common const
-
- urlForQuery(query, modelName) {
- var url = this._buildURL();
- return url + '/apps/' + query.appId + "/appattempts";
- },
-
- urlForFindRecord(id, modelName, snapshot) {
- var url = this._buildURL();
- var url = url + '/apps/' +
- Converter.attemptIdToAppId(id) + "/appattempts/" + id;
- console.log(url);
- return url;
- },
-
- ajax(url, method, hash) {
- hash = {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
deleted file mode 100644
index faff3e7..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster', // common const
- pathForType(modelName) {
- return 'apps'; // move to some common place, return path by modelname.
- },
- /*
- urlForQuery(query, modelName) {
- var url = this._buildURL();
- return url + '/apps/' + query.appId + "/appattempts";
- },
- */
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container-log.js
deleted file mode 100644
index 7838c98..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container-log.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-import Ember from 'ember';
-import Converter from 'yarn-ui/utils/converter';
-
-/**
- * REST URL's response when fetching container logs will be
- * in plain text format and not JSON.
- */
-export default DS.RESTAdapter.extend({
- headers: {
- Accept: 'text/plain'
- },
- host: 'http://localhost:1337/',
- namespace: 'ws/v1/node',
-
- urlForFindRecord(id, modelName, snapshot) {
- var splits = Converter.splitForContainerLogs(id);
- var nodeHttpAddr = splits[0];
- var containerId = splits[1];
- var filename = splits[2];
- this.host = this.host + nodeHttpAddr;
- var url = this._buildURL();
- url = url + "/containerlogs/" + containerId + "/" + filename;
- return url;
- },
-
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "NM";
- return this._super(url, method, hash);
- },
-
- /**
- * Override options so that result is not expected to be JSON
- */
- ajaxOptions: function (url, type, options) {
- var hash = options || {};
- hash.url = url;
- hash.type = type;
- // Make sure jQuery does not try to convert response to JSON.
- hash.dataType = 'text';
- hash.context = this;
-
- var headers = Ember.get(this, 'headers');
- if (headers != undefined) {
- hash.beforeSend = function (xhr) {
- Object.keys(headers).forEach(function (key) {
- return xhr.setRequestHeader(key, headers[key]);
- });
- };
- }
- return hash;
- },
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
deleted file mode 100644
index d941c38..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-import Config from 'yarn-ui/config';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- rmHost: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT,
- tsHost: 'http://localhost:1337/' + Config.TS_HOST + ':' + Config.TS_PORT,
- host: function() {
- return undefined
- }.property(),
- rmNamespace: 'ws/v1/cluster',
- tsNamespace: 'ws/v1/applicationhistory',
- namespace: function() {
- return undefined
- }.property(),
-
- urlForQuery(query, modelName) {
- if (query.is_rm) {
- this.set("host", this.rmHost);
- this.set("namespace", this.rmNamespace);
- } else {
- this.set("host", this.tsHost);
- this.set("namespace", this.tsNamespace);
- }
-
- var url = this._buildURL();
- url = url + '/apps/' + Converter.attemptIdToAppId(query.app_attempt_id)
- + "/appattempts/" + query.app_attempt_id + "/containers";
- console.log(url);
- return url;
- },
-
- ajax(url, method, hash) {
- hash = {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-app.js
deleted file mode 100644
index 0c60d1f..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-app.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/',
- namespace: 'ws/v1/node',
-
- urlForQuery(query) {
- this.host = this.host + query.nodeAddr;
- var url = this._buildURL();
- url = url + "/apps";
- return url;
- },
-
- urlForQueryRecord: function (query) {
- this.host = this.host + query.nodeAddr;
- var url = this._buildURL();
- url = url + "/apps/" + query.appId;
- return url;
- },
-
- query: function (store, type, query) {
- var url = this.urlForQuery(query);
- // Query params not required.
- query = null;
- return this.ajax(url, 'GET', { data: query });
- },
-
- queryRecord: function (store, type, query) {
- var url = this.urlForQueryRecord(query);
- // Query params not required.
- query = null;
- return this.ajax(url, 'GET', { data: query });
- },
-
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "NM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-container.js
deleted file mode 100644
index e8bf7b7..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-container.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/',
- namespace: 'ws/v1/node',
-
- urlForQuery(query) {
- this.host = this.host + query.nodeHttpAddr;
- var url = this._buildURL();
- url = url + "/containers";
- return url;
- },
-
- urlForQueryRecord(query) {
- this.host = this.host + query.nodeHttpAddr;
- var url = this._buildURL();
- url = url + "/containers/" + query.containerId;
- return url;
- },
-
- query: function (store, type, query) {
- var url = this.urlForQuery(query);
- // Query params not required.
- query = null;
- return this.ajax(url, 'GET', { data: query });
- },
-
- queryRecord: function (store, type, query) {
- var url = this.urlForQueryRecord(query);
- // Query params not required.
- query = null;
- console.log(url);
- return this.ajax(url, 'GET', { data: query });
- },
-
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "NM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node.js
deleted file mode 100644
index 64f524a..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/',
- namespace: 'ws/v1/node',
-
- urlForFindRecord(id, modelName, snapshot) {
- this.host = this.host + id;
- var url = this._buildURL();
- return url;
- },
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "NM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
deleted file mode 100644
index 0f6eb65..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster', // common const
- pathForType(modelName) {
- return 'scheduler'; // move to some common place, return path by modelname.
- },
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-rm-node.js
deleted file mode 100644
index c6ad6f3..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-rm-node.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
-
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT,
- namespace: 'ws/v1/cluster',
- pathForType(modelName) {
- return 'nodes';
- },
-
- urlForFindRecord(id, modelName, snapshot) {
- var url = this._buildURL();
- url = url + "/nodes/" + id;
- return url;
- },
-
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/app.js
deleted file mode 100644
index ff28ecf..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/app.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Ember from 'ember';
-import Resolver from 'ember/resolver';
-import loadInitializers from 'ember/load-initializers';
-import config from './config/environment';
-import Sorter from 'yarn-ui/utils/sorter';
-
-var App;
-
-Ember.MODEL_FACTORY_INJECTIONS = true;
-
-App = Ember.Application.extend({
- modulePrefix: config.modulePrefix,
- podModulePrefix: config.podModulePrefix,
- Resolver: Resolver
-});
-
-loadInitializers(App, config.modulePrefix);
-Sorter.initDataTableSorter();
-
-export default App;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/.gitkeep
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-attempt-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-attempt-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-attempt-table.js
deleted file mode 100644
index aff0493..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-attempt-table.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-table.js
deleted file mode 100644
index aff0493..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-table.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/bar-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/bar-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/bar-chart.js
deleted file mode 100644
index f24e947..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/bar-chart.js
+++ /dev/null
@@ -1,104 +0,0 @@
-import Ember from 'ember';
-import BaseChartComponent from 'yarn-ui/components/base-chart-component';
-
-export default BaseChartComponent.extend({
- // data:
- // [{label=label1, value=value1}, ...]
- // ...
- renderBarChart: function(data, title, textWidth = 50) {
- var g = this.chart.g;
- var layout = this.getLayout();
- this.renderTitleAndBG(g, title, layout);
-
- var maxValue = -1;
- for (var i = 0; i < data.length; i++) {
- if (data[i] instanceof Array) {
- if (data[i][0].value > maxValue) {
- maxValue = data[i][0].value;
- }
- } else {
- if (data[i].value > maxValue) {
- maxValue = data[i].value;
- }
- }
- }
-
- var singleBarHeight = 30;
-
- // 50 is for text
- var maxBarWidth = layout.x2 - layout.x1 - 2 * layout.margin - textWidth - 50;
-
- // 30 is for title
- var maxBarsHeight = layout.y2 - layout.y1 - 2 * layout.margin - 30;
- var gap = (maxBarsHeight - data.length * singleBarHeight) / (data.length -
- 1);
-
- var xScaler = d3.scale.linear()
- .domain([0, maxValue])
- .range([0, maxBarWidth]);
-
- // show bar text
- for (var i = 0; i < data.length; i++) {
- g.append("text")
- .text(
- function() {
- return data[i].label;
- })
- .attr("y", function() {
- return layout.y1 + singleBarHeight / 2 + layout.margin + (gap +
- singleBarHeight) * i + 30;
- })
- .attr("x", layout.x1 + layout.margin);
- }
-
- // show bar
- var bar = g.selectAll("bars")
- .data(data)
- .enter()
- .append("rect")
- .attr("y", function(d, i) {
- return layout.y1 + 30 + layout.margin + (gap + singleBarHeight) * i;
- })
- .attr("x", layout.x1 + layout.margin + textWidth)
- .attr("height", singleBarHeight)
- .attr("fill", function(d, i) {
- return this.colors[i];
- }.bind(this))
- .attr("width", 0);
-
- this.bindTooltip(bar);
-
- bar.transition()
- .duration(500)
- .attr("width", function(d) {
- var w;
- w = xScaler(d.value);
- // At least each item has 3 px
- w = Math.max(w, 3);
- return w;
- });
-
- // show bar value
- for (var i = 0; i < data.length; i++) {
- g.append("text")
- .text(
- function() {
- return data[i].value;
- })
- .attr("y", function() {
- return layout.y1 + singleBarHeight / 2 + layout.margin + (gap +
- singleBarHeight) * i + 30;
- })
- .attr("x", layout.x1 + layout.margin + textWidth + 15 + xScaler(data[i].value));
- }
- },
-
- draw: function() {
- this.initChart();
- this.renderBarChart(this.get("data"), this.get("title"), this.get("textWidth"));
- },
-
- didInsertElement: function() {
- this.draw();
- },
-})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/base-chart-component.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/base-chart-component.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/base-chart-component.js
deleted file mode 100644
index acf2b5f..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/base-chart-component.js
+++ /dev/null
@@ -1,109 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
- chart: undefined,
- tooltip : undefined,
- colors: d3.scale.category10().range(),
-
- initChart: function() {
- this.chart = {
- svg: undefined,
- g: undefined,
- h: 0,
- w: 0,
- tooltip: undefined
- };
-
- // Init tooltip if it is not initialized
- this.tooltip = d3.select("#chart-tooltip");
- if (!this.tooltip) {
- this.tooltip = d3.select("body")
- .append("div")
- .attr("class", "tooltip")
- .attr("id", "chart-tooltip")
- .style("opacity", 0);
- }
-
- // Init svg
- var svg = this.chart.svg;
- if (svg) {
- svg.remove();
- }
-
- var parentId = this.get("parentId");
- var parent = d3.select("#" + parentId);
- var bbox = parent.node().getBoundingClientRect();
- this.chart.w = bbox.width - 30;
-
- var ratio = 0.75; // 4:3 by default
- if (this.get("ratio")) {
- ratio = this.get("ratio");
- }
- this.chart.h = bbox.width * ratio;
-
- if (this.get("maxHeight")) {
- this.chart.h = Math.min(this.get("maxHeight"), this.chart.h);
- }
-
- this.chart.svg = parent.append("svg")
- .attr("width", this.chart.w)
- .attr("height", this.chart.h);
-
- this.chart.g = this.chart.svg.append("g");
- },
-
- renderTitleAndBG: function(g, title, layout) {
- var bg = g.append("g");
- bg.append("text")
- .text(title)
- .attr("x", (layout.x1 + layout.x2) / 2)
- .attr("y", layout.y1 + layout.margin + 20)
- .attr("class", "chart-title");
-
- bg.append("rect")
- .attr("x", layout.x1)
- .attr("y", layout.y1)
- .attr("width", layout.x2 - layout.x1)
- .attr("height", layout.y2 - layout.y1)
- .attr("class", "chart-frame");
- },
-
- bindTooltip: function(d) {
- d.on("mouseover", function(d) {
- this.tooltip
- .style("left", (d3.event.pageX) + "px")
- .style("top", (d3.event.pageY - 28) + "px");
- }.bind(this))
- .on("mousemove", function(d) {
- // Handle pie chart case
- var data = d;
- if (d.data) {
- data = d.data;
- }
-
- this.tooltip.style("opacity", .9);
- this.tooltip.html(data.label + " = " + data.value)
- .style("left", (d3.event.pageX) + "px")
- .style("top", (d3.event.pageY - 28) + "px");
- }.bind(this))
- .on("mouseout", function(d) {
- this.tooltip.style("opacity", 0);
- }.bind(this));
- },
-
- getLayout: function() {
- var x1 = 0;
- var y1 = 0;
- var x2 = this.chart.w;
- var y2 = this.chart.h;
-
- var layout = {
- x1: x1,
- y1: y1,
- x2: x2 - 10,
- y2: y2 - 10,
- margin: 10
- };
- return layout;
- },
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/container-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/container-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/container-table.js
deleted file mode 100644
index aff0493..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/container-table.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/donut-chart.js
deleted file mode 100644
index 608b0c1..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/donut-chart.js
+++ /dev/null
@@ -1,148 +0,0 @@
-import Ember from 'ember';
-import BaseChartComponent from 'yarn-ui/components/base-chart-component';
-
-export default BaseChartComponent.extend({
- /*
- * data = [{label="xx", value=},{...}]
- */
- renderDonutChart: function(data, title, showLabels = false,
- middleLabel = "Total", middleValue = undefined) {
- var g = this.chart.g;
- var layout = this.getLayout();
- this.renderTitleAndBG(g, title, layout);
-
- var total = 0;
- var allZero = true;
- for (var i = 0; i < data.length; i++) {
- total += data[i].value;
- if (data[i].value > 1e-6) {
- allZero = false;
- }
- }
-
- if (!middleValue) {
- middleValue = total;
- }
-
- //Width and height
- var h = layout.y2 - layout.y1;
-
- // 50 is for title
- var outerRadius = (h - 50 - 2 * layout.margin) / 2;
- var innerRadius = outerRadius * 0.618;
- var arc = d3.svg.arc()
- .innerRadius(innerRadius)
- .outerRadius(outerRadius);
-
- var cx;
- var cy = layout.y1 + 50 + layout.margin + outerRadius;
- if (showLabels) {
- cx = layout.x1 + layout.margin + outerRadius;
- } else {
- cx = (layout.x1 + layout.x2) / 2;
- }
-
- var pie = d3.layout.pie();
- pie.sort(null);
- pie.value(function(d) {
- var v = d.value;
- // make sure it > 0
- v = Math.max(v, 1e-6);
- return v;
- });
-
- //Set up groups
- var arcs = g
- .selectAll("g.arc")
- .data(pie(data))
- .enter()
- .append("g")
- .attr("class", "arc")
- .attr("transform", "translate(" + cx + "," + cy + ")");
-
- function tweenPie(finish) {
- var start = {
- startAngle: 0,
- endAngle: 0
- };
- var i = d3.interpolate(start, finish);
- return function(d) {
- return arc(i(d));
- };
- }
-
- //Draw arc paths
- var path = arcs.append("path")
- .attr("fill", function(d, i) {
- if (d.value > 1e-6) {
- return this.colors[i];
- } else {
- return "white";
- }
- }.bind(this))
- .attr("d", arc)
- .attr("stroke", function(d, i) {
- if (allZero) {
- return this.colors[i];
- }
- }.bind(this))
- .attr("stroke-dasharray", function(d, i) {
- if (d.value <= 1e-6) {
- return "10,10";
- }
- }.bind(this));
- this.bindTooltip(path);
-
- // Show labels
- if (showLabels) {
- var lx = layout.x1 + layout.margin + outerRadius * 2 + 30;
- var squareW = 15;
- var margin = 10;
-
- var select = g.selectAll(".rect")
- .data(data)
- .enter();
- select.append("rect")
- .attr("fill", function(d, i) {
- return this.colors[i];
- }.bind(this))
- .attr("x", lx)
- .attr("y", function(d, i) {
- return layout.y1 + 50 + (squareW + margin) * i + layout.margin;
- })
- .attr("width", squareW)
- .attr("height", squareW);
- select.append("text")
- .attr("x", lx + squareW + margin)
- .attr("y", function(d, i) {
- return layout.y1 + 50 + (squareW + margin) * i + layout.margin + squareW / 2;
- })
- .text(function(d) {
- return d.label + ' = ' + d.value;
- });
- }
-
- if (middleLabel) {
- var highLightColor = this.colors[0];
- g.append("text").text(middleLabel).attr("x", cx).attr("y", cy - 10).
- attr("class", "donut-highlight-text").attr("fill", highLightColor);
- g.append("text").text(middleValue).attr("x", cx).attr("y", cy + 20).
- attr("class", "donut-highlight-text").attr("fill", highLightColor).
- style("font-size", "30px");
- }
-
- path.transition()
- .duration(500)
- .attrTween('d', tweenPie);
- },
-
- draw: function() {
- this.initChart();
- this.renderDonutChart(this.get("data"), this.get("title"), this.get("showLabels"),
- this.get("middleLabel"), this.get("middleValue"));
- },
-
- didInsertElement: function() {
- this.draw();
- },
-})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/item-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/item-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/item-selector.js
deleted file mode 100644
index a18ccae..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/item-selector.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
- didInsertElement: function() {
- $(".js-example-basic-single").select2(
- {
- width: '100%',
- placeholder: "Select a queue"
- });
- var elementId = this.get("element-id");
- var prefix = this.get("prefix");
-
- var element = d3.select("#" + elementId);
-
- if (element) {
- this.get("model").forEach(function(o) {
- element.append("option").attr("value", o.get("name")).text(prefix + o.get("name"));
- });
- }
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-configuration-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-configuration-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-configuration-table.js
deleted file mode 100644
index aff0493..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-configuration-table.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-navigator.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-navigator.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-navigator.js
deleted file mode 100644
index aff0493..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-navigator.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Component.extend({
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-view.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-view.js
deleted file mode 100644
index c1fd8ff..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-view.js
+++ /dev/null
@@ -1,272 +0,0 @@
-import Ember from 'ember';
-import ChartUtilsMixin from 'yarn-ui/mixins/charts-utils';
-
-export default Ember.Component.extend(ChartUtilsMixin, {
- queues: {
- data: undefined,
- foldedQueues: {},
- selectedQueueCircle: undefined,
- maxDepth: -1,
- },
-
- queueColors: d3.scale.category20().range(),
-
- renderQueue: function(now, depth, sequence) {
- if (depth > this.queues.maxDepth) {
- this.queues.maxDepth = depth;
- }
-
- var cx = 20 + depth * 30;
- var cy = 20 + sequence * 30;
- var name = now.get("name");
-
- var g = this.queues.dataGroup.append("g")
- .attr("id", "queue-" + name + "-g");
-
- var folded = this.queues.foldedQueues[name];
- var isParentQueue = false;
-
- // render its children
- var children = [];
- var childrenNames = now.get("children");
- if (childrenNames) {
- childrenNames.forEach(function(name) {
- isParentQueue = true;
- var child = this.queues.data[name];
- if (child) {
- children.push(child);
- }
- }.bind(this));
- }
- if (folded) {
- children = [];
- }
- var linefunction = d3.svg.line()
- .interpolate("basis")
- .x(function(d) {
- return d.x;
- })
- .y(function(d) {
- return d.y;
- });
-
- for (var i = 0; i < children.length; i++) {
- sequence = sequence + 1;
- // Get center of children queue
- var cc = this.renderQueue(children[i],
- depth + 1, sequence);
- g.append("path")
- .attr("class", "queue")
- .attr("d", linefunction([{
- x: cx,
- y: cy
- }, {
- x: cc.x - 20,
- y: cc.y
- }, cc]));
- }
-
- var circle = g.append("circle")
- .attr("cx", cx)
- .attr("cy", cy)
- .attr("class", "queue");
-
- circle.on('mouseover', function() {
- circle.style("fill", this.queueColors[1]);
- }.bind(this));
- circle.on('mouseout', function() {
- if (circle != this.queues.selectedQueueCircle) {
- circle.style("fill", this.queueColors[0]);
- }
- }.bind(this));
- circle.on('click', function() {
- circle.style("fill", this.queueColors[2]);
- var pre = this.queues.selectedQueueCircle;
- this.queues.selectedQueueCircle = circle;
- if (pre) {
- pre.on('mouseout')();
- }
- this.renderCharts(name);
- }.bind(this));
- circle.on('dblclick', function() {
- if (!isParentQueue) {
- return;
- }
-
- if (this.queues.foldedQueues[name]) {
- delete this.queues.foldedQueues[name];
- } else {
- this.queues.foldedQueues[name] = now;
- }
- this.renderQueues();
- }.bind(this));
-
- var text = name;
- if (folded) {
- text = name + " (+)";
- }
-
- // print queue's name
- g.append("text")
- .attr("x", cx + 30)
- .attr("y", cy + 5)
- .text(text)
- .attr("class", "queue");
-
- return {
- x: cx,
- y: cy
- };
- },
-
- renderQueues: function() {
- if (this.queues.dataGroup) {
- this.queues.dataGroup.remove();
- }
- // render queues
- this.queues.dataGroup = this.canvas.svg.append("g")
- .attr("id", "queues-g");
- var rootQueue = undefined;
-
- if (this.queues.data) {
- this.renderQueue(this.queues.data['root'], 0, 0);
-
- }
- },
-
- draw: function() {
- this.queues.data = {};
- this.get("model")
- .forEach(function(o) {
- this.queues.data[o.id] = o;
- }.bind(this));
-
- // get w/h of the svg
- var bbox = d3.select("#main-container")
- .node()
- .getBoundingClientRect();
- this.canvas.w = bbox.width;
- this.canvas.h = Math.max(Object.keys(this.queues.data)
- .length * 35, 1500);
-
- this.canvas.svg = d3.select("#main-container")
- .append("svg")
- .attr("width", this.canvas.w)
- .attr("height", this.canvas.h)
- .attr("id", "main-svg");
-
- this.renderBackground();
-
- this.renderQueues();
- this.renderCharts("root");
- },
-
- didInsertElement: function() {
- this.draw();
- },
-
- /*
- * data = [{label="xx", value=},{...}]
- */
- renderTable: function(data, title, layout) {
- d3.select("#main-svg")
- .append('table')
- .selectAll('tr')
- .data(data)
- .enter()
- .append('tr')
- .selectAll('td')
- .data(function(d) {
- return d;
- })
- .enter()
- .append('td')
- .text(function(d) {
- return d;
- });
- },
-
- renderQueueCapacities: function(queue, layout) {
- // Render bar chart
- this.renderBarChart(this.charts.g, [{
- label: "Cap",
- value: queue.get("capacity")
- }, {
- label: "MaxCap",
- value: queue.get("maxCapacity")
- }, {
- label: "UsedCap",
- value: queue.get("usedCapacity")
- }], "Queue Capacities", layout, 60);
- },
-
- renderChildrenCapacities: function(queue, layout) {
- var data = [];
- var children = queue.get("children");
- if (children) {
- for (var i = 0; i < children.length; i++) {
- var child = this.queues.data[children[i]];
- data.push({
- label: child.get("name"),
- value: child.get("capacity")
- });
- }
- }
-
- this.renderDonutChart(this.charts.g, data, "Children Capacities", layout, true);
- },
-
- renderChildrenUsedCapacities: function(queue, layout) {
- var data = [];
- var children = queue.get("children");
- if (children) {
- for (var i = 0; i < children.length; i++) {
- var child = this.queues.data[children[i]];
- data.push({
- label: child.get("name"),
- value: child.get("usedCapacity")
- });
- }
- }
-
- this.renderDonutChart(this.charts.g, data, "Children Used Capacities", layout, true);
- },
-
- renderLeafQueueUsedCapacities: function(layout) {
- var leafQueueUsedCaps = [];
- for (var queueName in this.queues.data) {
- var q = this.queues.data[queueName];
- if ((!q.get("children")) || q.get("children")
- .length == 0) {
- // it's a leafqueue
- leafQueueUsedCaps.push({
- label: q.get("name"),
- value: q.get("usedCapacity")
- });
- }
- }
-
- this.renderDonutChart(this.charts.g, leafQueueUsedCaps, "LeafQueues Used Capacities",
- layout, true);
- },
-
- renderCharts: function(queueName) {
- this.charts.leftBannerLen = this.queues.maxDepth * 30 + 100;
- this.initCharts();
-
- var queue = this.queues.data[queueName];
- var idx = 0;
-
- if (queue.get("name") == "root") {
- this.renderLeafQueueUsedCapacities(this.getLayout(idx++));
- }
- if (queue.get("name") != "root") {
- this.renderQueueCapacities(queue, this.getLayout(idx++));
- }
- if (queue.get("children") && queue.get("children")
- .length > 0) {
- this.renderChildrenCapacities(queue, this.getLayout(idx++));
- this.renderChildrenUsedCapacities(queue, this.getLayout(idx++));
- }
- },
-});
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[40/50] [abbrv] hadoop git commit: YARN-5741. [YARN-3368] Update UI2
documentation for new UI2 path (Kai Sasaki and Wangda Tan via Sunil G)
Posted by su...@apache.org.
YARN-5741. [YARN-3368] Update UI2 documentation for new UI2 path (Kai Sasaki and Wangda Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6871a46f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6871a46f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6871a46f
Branch: refs/heads/YARN-3368
Commit: 6871a46fc34ceb4081c305dc27bee78d775821f0
Parents: d4d9035
Author: sunilg <su...@apache.org>
Authored: Tue Oct 18 23:49:55 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../src/site/markdown/YarnUI2.md | 28 +++++++++-----------
1 file changed, 12 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6871a46f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
index ff48183..f646d3d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
@@ -18,30 +18,26 @@
Hadoop: YARN-UI V2
=================
-Prerequisites
--------------
-
-If you run RM locally in your computer for test purpose, you need the following things properly installed.
-
-- Install Node.js with NPM: https://nodejs.org/download
-- After Node.js installed, install `corsproxy`: `npm install -g corsproxy`.
-
-
Configurations
-------------
-*In yarn-site.xml*
+*In `yarn-site.xml`*
| Configuration Property | Description |
|:---- |:---- |
-| `yarn.resourcemanager.webapp.ui2.enable` | In the server side it indicates whether the new YARN-UI v2 is enabled or not. Defaults to `false`. |
-| `yarn.resourcemanager.webapp.ui2.address` | Specify the address of ResourceManager and port which host YARN-UI v2, defaults to `localhost:8288`. |
+| `yarn.webapp.ui2.enable` | *(Required)* In the server side it indicates whether the new YARN-UI v2 is enabled or not. Defaults to `false`. |
+| `yarn.webapp.ui2.war-file-path` | *(Optional)* WAR file path for launching yarn UI2 web application. By default this is empty and YARN will lookup required war file from classpath |
-*In $HADOOP_PREFIX/share/hadoop/yarn/webapps/rm/config/configs.env*
+Please note that, If you run YARN daemons locally in your machine for test purpose,
+you need the following configurations added to `yarn-site.xml` to enable cross
+origin (CORS) support.
-- Update timelineWebAddress and rmWebAddress to the actual addresses run resource manager and timeline server
-- If you run RM locally in you computer just for test purpose, you need to keep `corsproxy` running. Otherwise, you need to set `localBaseAddress` to empty.
+| Configuration Property | Value | Description |
+|:---- |:---- |:---- |
+| `yarn.timeline-service.http-cross-origin.enabled` | true | Enable CORS support for Timeline Server |
+| `yarn.resourcemanager.webapp.cross-origin.enabled` | true | Enable CORS support for Resource Manager |
+| `yarn.nodemanager.webapp.cross-origin.enabled` | true | Enable CORS support for Node Manager |
Use it
-------------
-Open your browser, go to `rm-address:8288` and try it!
+Open your browser, go to `rm-address:8088/ui2` and try it!
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[15/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup
code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-test.js
deleted file mode 100644
index 5877589..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-node-test.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('yarn-node', 'Unit | Model | Node', {
- // Specify the other units that are required for this test.
- needs: []
-});
-
-test('Basic creation test', function(assert) {
- let model = this.subject();
-
- assert.ok(model);
- assert.ok(model._notifyProperties);
- assert.ok(model.didLoad);
- assert.ok(model.totalVmemAllocatedContainersMB);
- assert.ok(model.vmemCheckEnabled);
- assert.ok(model.pmemCheckEnabled);
- assert.ok(model.nodeHealthy);
- assert.ok(model.lastNodeUpdateTime);
- assert.ok(model.healthReport);
- assert.ok(model.nmStartupTime);
- assert.ok(model.nodeManagerBuildVersion);
- assert.ok(model.hadoopBuildVersion);
-});
-
-test('test fields', function(assert) {
- let model = this.subject();
-
- assert.expect(4);
- Ember.run(function () {
- model.set("totalVmemAllocatedContainersMB", 4096);
- model.set("totalPmemAllocatedContainersMB", 2048);
- model.set("totalVCoresAllocatedContainers", 4);
- model.set("hadoopBuildVersion", "3.0.0-SNAPSHOT");
- assert.equal(model.get("totalVmemAllocatedContainersMB"), 4096);
- assert.equal(model.get("totalPmemAllocatedContainersMB"), 2048);
- assert.equal(model.get("totalVCoresAllocatedContainers"), 4);
- assert.equal(model.get("hadoopBuildVersion"), "3.0.0-SNAPSHOT");
- });
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-rm-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-rm-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-rm-node-test.js
deleted file mode 100644
index 4fd2517..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-rm-node-test.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('yarn-rm-node', 'Unit | Model | RMNode', {
- // Specify the other units that are required for this test.
- needs: []
-});
-
-test('Basic creation test', function(assert) {
- let model = this.subject();
-
- assert.ok(model);
- assert.ok(model._notifyProperties);
- assert.ok(model.didLoad);
- assert.ok(model.rack);
- assert.ok(model.state);
- assert.ok(model.nodeHostName);
- assert.ok(model.nodeHTTPAddress);
- assert.ok(model.lastHealthUpdate);
- assert.ok(model.healthReport);
- assert.ok(model.numContainers);
- assert.ok(model.usedMemoryMB);
- assert.ok(model.availMemoryMB);
- assert.ok(model.usedVirtualCores);
- assert.ok(model.availableVirtualCores);
- assert.ok(model.version);
- assert.ok(model.nodeLabels);
- assert.ok(model.nodeLabelsAsString);
- assert.ok(model.nodeStateStyle);
- assert.ok(model.isDummyNode);
- assert.ok(model.getMemoryDataForDonutChart);
- assert.ok(model.getVCoreDataForDonutChart);
-});
-
-test('test fields', function(assert) {
- let model = this.subject();
-
- Ember.run(function () {
- model.set("rack", "/default-rack");
- model.set("state", "RUNNING");
- model.set("nodeHostName", "localhost");
- model.set("id", "localhost:64318");
- model.set("nodeHTTPAddress", "localhost:8042");
- model.set("usedMemoryMB", 1024);
- model.set("availMemoryMB", 7168);
- model.set("usedVirtualCores", 1);
- model.set("availableVirtualCores", 7);
- model.set("nodeLabels", ["x"]);
- assert.equal(model.get("rack"), "/default-rack");
- assert.equal(model.get("state"), "RUNNING");
- assert.equal(model.get("nodeHostName"), "localhost");
- assert.equal(model.get("id"), "localhost:64318");
- assert.equal(model.get("nodeHTTPAddress"), "localhost:8042");
- assert.equal(model.get("usedMemoryMB"), 1024);
- assert.equal(model.get("availMemoryMB"), 7168);
- assert.equal(model.get("usedVirtualCores"), 1);
- assert.equal(model.get("availableVirtualCores"), 7);
- assert.equal(model.get("isDummyNode"), false);
- assert.deepEqual(model.get("nodeLabels"), ["x"]);
- assert.equal(model.get("nodeLabelsAsString"), "x");
- assert.deepEqual(model.get("nodeStateStyle"), "label label-success");
- assert.deepEqual(model.get("getMemoryDataForDonutChart"),
- [{label: "Used", value: 1024}, {label: "Available", value: 7168}]);
- assert.deepEqual(model.get("getVCoreDataForDonutChart"),
- [{label: "Used", value: 1}, {label: "Available", value: 7}]);
- model.set("state", "SHUTDOWN");
- assert.deepEqual(model.get("nodeStateStyle"), "label label-danger");
- model.set("state", "REBOOTED");
- assert.deepEqual(model.get("nodeStateStyle"), "label label-warning");
- model.set("state", "NEW");
- assert.deepEqual(model.get("nodeStateStyle"), "label label-default");
- model.set("nodeLabels", ["x","y"]);
- assert.equal(model.get("nodeLabelsAsString"), "x");
- model.set("nodeLabels", undefined);
- assert.equal(model.get("nodeLabelsAsString"), "");
- });
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-apps-test.js
deleted file mode 100644
index a438b2e..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-apps-test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:yarn-apps', 'Unit | Route | yarn apps', {
- // Specify the other units that are required for this test.
- // needs: ['controller:foo']
-});
-
-test('it exists', function(assert) {
- var route = this.subject();
- assert.ok(route);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-container-log-test.js
deleted file mode 100644
index 4e68da0..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-container-log-test.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-import Constants from 'yarn-ui/constants';
-
-moduleFor('route:yarn-container-log', 'Unit | Route | ContainerLog', {
-});
-
-test('Basic creation test', function(assert) {
- let route = this.subject();
- assert.ok(route);
- assert.ok(route.model);
-});
-
-test('Test getting container log', function(assert) {
- var response = {
- logs: "This is syslog",
- containerID: "container_e32_1456000363780_0002_01_000001",
- logFileName: "syslog"};
- var store = {
- findRecord: function(type) {
- return new Ember.RSVP.Promise(function(resolve) {
- resolve(response);
- }
- )}
- };
- assert.expect(6);
- var route = this.subject();
- route.set('store', store);
- var model = route.model({node_id: "localhost:64318",
- node_addr: "localhost:8042",
- container_id: "container_e32_1456000363780_0002_01_000001",
- filename: "syslog"});
- model.then(function(value) {
- assert.ok(value);
- assert.ok(value.containerLog);
- assert.deepEqual(value.containerLog, response);
- assert.ok(value.nodeInfo);
- assert.equal(value.nodeInfo.addr, 'localhost:8042');
- assert.equal(value.nodeInfo.id, 'localhost:64318');
- });
-});
-
-/**
- * This can happen when an empty response is sent from server
- */
-test('Test non HTTP error while getting container log', function(assert) {
- var error = {};
- var response = {
- logs: "",
- containerID: "container_e32_1456000363780_0002_01_000001",
- logFileName: "syslog"};
- var store = {
- findRecord: function(type) {
- return new Ember.RSVP.Promise(function(resolve, reject) {
- reject(error);
- }
- )}
- };
- assert.expect(6);
- var route = this.subject();
- route.set('store', store);
- var model = route.model({node_id: "localhost:64318",
- node_addr: "localhost:8042",
- container_id: "container_e32_1456000363780_0002_01_000001",
- filename: "syslog"});
- model.then(function(value) {
- assert.ok(value);
- assert.ok(value.containerLog);
- assert.deepEqual(value.containerLog, response);
- assert.ok(value.nodeInfo);
- assert.equal(value.nodeInfo.addr, 'localhost:8042');
- assert.equal(value.nodeInfo.id, 'localhost:64318');
- });
-});
-
-test('Test HTTP error while getting container log', function(assert) {
- var error = {errors: [{status: 404, responseText: 'Not Found'}]};
- var response = {
- logs: "",
- containerID: "container_e32_1456000363780_0002_01_000001",
- logFileName: "syslog"};
- var store = {
- findRecord: function(type) {
- return new Ember.RSVP.Promise(function(resolve, reject) {
- reject(error);
- }
- )}
- };
- assert.expect(5);
- var route = this.subject();
- route.set('store', store);
- var model = route.model({node_id: "localhost:64318",
- node_addr: "localhost:8042",
- container_id: "container_e32_1456000363780_0002_01_000001",
- filename: "syslog"});
- model.then(function(value) {
- assert.ok(value);
- assert.ok(value.errors);
- assert.equal(value.errors.length, 1);
- assert.equal(value.errors[0].status, 404);
- assert.equal(value.errors[0].responseText, 'Not Found');
- });
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-app-test.js
deleted file mode 100644
index 8e5acf9..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-app-test.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:yarn-node-app', 'Unit | Route | NodeApp', {
-});
-
-test('Basic creation test', function(assert) {
- let route = this.subject();
- assert.ok(route);
- assert.ok(route.model);
-});
-
-test('Test getting specific app on a node', function(assert) {
- var response =
- {id:"application_1456251210105_0001", state:"FINISHED", user:"root"};
- var store = {
- queryRecord: function(type, query) {
- return new Ember.RSVP.Promise(function(resolve) {
- resolve(response);
- });
- }
- };
- assert.expect(6);
- var route = this.subject();
- route.set('store', store);
- var model =
- route.model({node_id:"localhost:64318", node_addr:"localhost:8042",
- app_id:"application_1456251210105_0001"}).
- then(
- function(value){
- assert.ok(value);
- assert.ok(value.nodeApp);
- assert.deepEqual(value.nodeApp, response);
- assert.ok(value.nodeInfo);
- assert.equal(value.nodeInfo.addr, 'localhost:8042');
- assert.equal(value.nodeInfo.id, 'localhost:64318');
- }
- );
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-apps-test.js
deleted file mode 100644
index 44d9995..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-apps-test.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:yarn-node-apps', 'Unit | Route | NodeApps', {
-});
-
-test('Basic creation test', function(assert) {
- let route = this.subject();
- assert.ok(route);
- assert.ok(route.model);
-});
-
-test('Test getting apps on a node', function(assert) {
- var response = [
- {id:"application_1456251210105_0001", state:"FINISHED", user:"root"},
- {id:"application_1456251210105_0002", state:"RUNNING",user:"root",
- containerids:["container_e38_1456251210105_0002_01_000001",
- "container_e38_1456251210105_0002_01_000002"]}];
- var store = {
- query: function(type, query) {
- return new Ember.RSVP.Promise(function(resolve) {
- resolve(response.slice());
- });
- }
- };
- assert.expect(8);
- var route = this.subject();
- route.set('store', store);
- var model =
- route.model({node_id:"localhost:64318", node_addr:"localhost:8042"}).
- then(
- function(value){
- assert.ok(value);
- assert.ok(value.apps);
- assert.equal(value.apps.length, 2);
- assert.deepEqual(response[0], value.apps[0]);
- assert.deepEqual(response[1], value.apps[1]);
- assert.ok(value.nodeInfo);
- assert.equal(value.nodeInfo.addr, 'localhost:8042');
- assert.equal(value.nodeInfo.id, 'localhost:64318');
- }
- );
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-container-test.js
deleted file mode 100644
index f0b68fc..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-container-test.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:yarn-node-container', 'Unit | Route | NodeContainer', {
-});
-
-test('Basic creation test', function(assert) {
- let route = this.subject();
- assert.ok(route);
- assert.ok(route.model);
-});
-
-test('Test getting specific container on a node', function(assert) {
- var response =
- {id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
- exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
- totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
- "containerlogs/container_e32_1456000363780_0002_01_000001/root",
- nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
- "stdout"]};
- var store = {
- queryRecord: function(type, query) {
- return new Ember.RSVP.Promise(function(resolve) {
- resolve(response);
- });
- }
- };
- assert.expect(6);
- var route = this.subject();
- route.set('store', store);
- var model =
- route.model({node_id:"localhost:64318", node_addr:"localhost:8042",
- container_id:"container_e32_1456000363780_0002_01_000001"}).
- then(
- function(value){
- assert.ok(value);
- assert.ok(value.nodeContainer);
- assert.deepEqual(value.nodeContainer, response);
- assert.ok(value.nodeInfo);
- assert.equal(value.nodeInfo.addr, 'localhost:8042');
- assert.equal(value.nodeInfo.id, 'localhost:64318');
- }
- );
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-containers-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-containers-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-containers-test.js
deleted file mode 100644
index 8359713..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-containers-test.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('route:yarn-node-containers', 'Unit | Route | NodeContainers', {
-});
-
-test('Basic creation test', function(assert) {
- let route = this.subject();
- assert.ok(route);
- assert.ok(route.model);
-});
-
-test('Test getting apps on a node', function(assert) {
- var response =
- [{id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
- exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
- totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
- "containerlogs/container_e32_1456000363780_0002_01_000001/root",
- nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
- "stdout"]},
- {id:"container_e32_1456000363780_0002_01_000003", state:"RUNNING",
- exitCode:-1000, diagnostics:"", user:"root", totalMemoryNeededMB:1024,
- totalVCoresNeeded:1,containerLogsLink:"http://localhost:8042/node" +
- "/containerlogs/container_e32_1456000363780_0002_01_000003/root",
- nodeId:"localhost:64318",containerLogFiles:["syslog","stderr",
- "syslog.shuffle","stdout"]}];
- var store = {
- query: function(type, query) {
- return new Ember.RSVP.Promise(function(resolve) {
- resolve(response.slice());
- });
- }
- };
- assert.expect(8);
- var route = this.subject();
- route.set('store', store);
- var model =
- route.model({node_id:"localhost:64318", node_addr:"localhost:8042"}).
- then(
- function(value){
- assert.ok(value);
- assert.ok(value.containers);
- assert.equal(value.containers.length, 2);
- assert.deepEqual(value.containers[0], response[0]);
- assert.deepEqual(value.containers[1], response[1]);
- assert.ok(value.nodeInfo);
- assert.equal(value.nodeInfo.addr, 'localhost:8042');
- assert.equal(value.nodeInfo.id, 'localhost:64318');
- }
- );
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-test.js
deleted file mode 100644
index 4e82f1b..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-node-test.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-import Ember from 'ember';
-
-moduleFor('route:yarn-node', 'Unit | Route | Node', {
-});
-
-test('Basic creation test', function(assert) {
- let route = this.subject();
- assert.ok(route);
- assert.ok(route.model);
-});
-
-test('Test getting a node', function(assert) {
- var nodeResponse =
- {healthReport: "Healthy", totalVmemAllocatedContainersMB: 344064,
- totalPmemAllocatedContainersMB: 163840,
- totalVCoresAllocatedContainers: 160,
- vmemCheckEnabled: true, pmemCheckEnabled: true,
- lastNodeUpdateTime: 1456250210310, nodeHealthy: true,
- nodeManagerVersion: "3.0.0-SNAPSHOT",
- nodeManagerBuildVersion: "3.0.0-SNAPSHOT",
- nodeManagerVersionBuiltOn: "2000-01-01T00:00Z",
- hadoopVersion: "3.0.0-SNAPSHOT",
- hadoopBuildVersion: "3.0.0-SNAPSHOT",
- hadoopVersionBuiltOn: "2000-01-01T00:00Z",
- id: "localhost:64318", nodeHostName: "192.168.0.102",
- nmStartupTime: 1456250208231};
- var rmNodeResponse =
- {rack: "/default-rack", state: "RUNNING", id: "localhost:64318",
- nodeHostName: "localhost", nodeHTTPAddress: "localhost:8042",
- lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
- healthReport: "", numContainers: 0, usedMemoryMB: 0,
- availMemoryMB: 163840, usedVirtualCores: 0,
- availableVirtualCores: 160,
- resourceUtilization: {
- nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
- nodeCPUUsage: 0.14995001256465912,
- aggregatedContainersPhysicalMemoryMB: 0,
- aggregatedContainersVirtualMemoryMB: 0,
- containersCPUUsage: 0
- }};
-
- // Create store which returns appropriate responses.
- var store = {
- findRecord: function(type) {
- if (type == 'yarnNode') {
- return new Ember.RSVP.Promise(function(resolve) {
- resolve(nodeResponse);
- });
- } else if (type == 'yarnRmNode') {
- return new Ember.RSVP.Promise(function(resolve) {
- resolve(rmNodeResponse);
- });
- }
- }
- };
- var route = this.subject();
- assert.expect(4);
- route.set('store', store);
- var model = route.model(
- {node_addr:"localhost:8042", node_id:"localhost:64318"})._result;
- assert.ok(model.node);
- assert.deepEqual(model.node, nodeResponse);
- assert.ok(model.rmNode);
- assert.deepEqual(model.rmNode, rmNodeResponse);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-nodes-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-nodes-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-nodes-test.js
deleted file mode 100644
index baa5bd6..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-nodes-test.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-import Ember from 'ember';
-
-moduleFor('route:yarn-nodes', 'Unit | Route | Nodes', {
-});
-
-test('Basic creation test', function(assert) {
- let route = this.subject();
- assert.ok(route);
- assert.ok(route.model);
-});
-
-test('Test getting nodes', function(assert) {
- var response = [{
- rack: "/default-rack", state: "RUNNING", id: "192.168.1.1:64318",
- nodeHostName: "192.168.1.1", nodeHTTPAddress: "192.168.1.1:8042",
- lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
- healthReport: "", numContainers: 0, usedMemoryMB: 0,
- availMemoryMB: 163840, usedVirtualCores: 0,
- availableVirtualCores: 160,
- resourceUtilization: {
- nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
- nodeCPUUsage: 0.14995001256465912,
- aggregatedContainersPhysicalMemoryMB: 0,
- aggregatedContainersVirtualMemoryMB: 0,
- containersCPUUsage: 0
- }},
- {rack: "/default-rack", state: "RUNNING", id: "192.168.1.2:64318",
- nodeHostName: "192.168.1.2", nodeHTTPAddress: "192.168.1.2:8042",
- lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
- healthReport: "", numContainers: 0, usedMemoryMB: 0,
- availMemoryMB: 163840, usedVirtualCores: 0,
- availableVirtualCores: 160,
- resourceUtilization: {
- nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
- nodeCPUUsage: 0.14995001256465912,
- aggregatedContainersPhysicalMemoryMB: 0,
- aggregatedContainersVirtualMemoryMB: 0,
- containersCPUUsage: 0
- }}];
- var store = {
- findAll: function(type) {
- return new Ember.RSVP.Promise(function(resolve) {
- resolve(response);
- });
- }
- };
- var route = this.subject();
- route.set('store', store);
- var model = route.model()._result;
- assert.expect(4);
- assert.ok(model);
- assert.equal(model.length, 2);
- assert.deepEqual(response[0], model[0]);
- assert.deepEqual(response[1], model[1]);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-app-test.js
deleted file mode 100644
index a169fd5..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-app-test.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import { moduleForModel, test } from 'ember-qunit';
-
-moduleForModel('yarn-app', 'Unit | Serializer | yarn app', {
- // Specify the other units that are required for this test.
- needs: ['serializer:yarn-app']
-});
-
-// Replace this with your real tests.
-test('it serializes records', function(assert) {
- var record = this.subject();
-
- var serializedRecord = record.serialize();
-
- assert.ok(serializedRecord);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-container-log-test.js
deleted file mode 100644
index 2349dc2..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-container-log-test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('serializer:yarn-container-log', 'Unit | Serializer | ContainerLog', {
-});
-
-test('Basic creation test', function(assert) {
- let serializer = this.subject();
-
- assert.ok(serializer);
- assert.ok(serializer.normalizeSingleResponse);
-});
-
-test('normalizeSingleResponse test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-container-log"
- },
- payload = "This is syslog";
- var id = "localhost:64318!container_e32_1456000363780_0002_01_000001!syslog";
- assert.expect(6);
- var response =
- serializer.normalizeSingleResponse({}, modelClass, payload, id, null);
- assert.ok(response.data);
- assert.equal(response.data.id, id);
- assert.equal(response.data.type, modelClass.modelName);
- assert.equal(response.data.attributes.logs, payload);
- assert.equal(response.data.attributes.containerID,
- "container_e32_1456000363780_0002_01_000001");
- assert.equal(response.data.attributes.logFileName, "syslog");
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-app-test.js
deleted file mode 100644
index 21a715c..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-app-test.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('serializer:yarn-node-app', 'Unit | Serializer | NodeApp', {
-});
-
-test('Basic creation test', function(assert) {
- let serializer = this.subject();
-
- assert.ok(serializer);
- assert.ok(serializer.normalizeSingleResponse);
- assert.ok(serializer.normalizeArrayResponse);
- assert.ok(serializer.internalNormalizeSingleResponse);
-});
-
-test('normalizeArrayResponse test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-node-app"
- },
- payload = {
- apps: {
- app: [{
- id:"application_1456251210105_0001", state:"FINISHED", user:"root"
- },{
- id:"application_1456251210105_0002", state:"RUNNING",user:"root",
- containerids:["container_e38_1456251210105_0002_01_000001",
- "container_e38_1456251210105_0002_01_000002"]
- }]
- }
- };
- assert.expect(15);
- var response =
- serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
- assert.ok(response.data);
- assert.equal(response.data.length, 2);
- assert.equal(response.data[0].attributes.containers, undefined);
- assert.equal(response.data[1].attributes.containers.length, 2);
- assert.deepEqual(response.data[1].attributes.containers,
- payload.apps.app[1].containerids);
- for (var i = 0; i < 2; i++) {
- assert.equal(response.data[i].type, modelClass.modelName);
- assert.equal(response.data[i].id, payload.apps.app[i].id);
- assert.equal(response.data[i].attributes.appId, payload.apps.app[i].id);
- assert.equal(response.data[i].attributes.state, payload.apps.app[i].state);
- assert.equal(response.data[i].attributes.user, payload.apps.app[i].user);
- }
-});
-
-test('normalizeArrayResponse no apps test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-node-app"
- },
- payload = { apps: null };
- assert.expect(5);
- var response =
- serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
- assert.ok(response.data);
- assert.equal(response.data.length, 1);
- assert.equal(response.data[0].type, modelClass.modelName);
- assert.equal(response.data[0].id, "dummy");
- assert.equal(response.data[0].attributes.appId, undefined);
-});
-
-test('normalizeSingleResponse test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-node-app"
- },
- payload = {
- app: {id:"application_1456251210105_0001", state:"FINISHED", user:"root"}
- };
- assert.expect(7);
- var response =
- serializer.normalizeSingleResponse({}, modelClass, payload, null, null);
- assert.ok(response.data);
- assert.equal(payload.app.id, response.data.id);
- assert.equal(modelClass.modelName, response.data.type);
- assert.equal(payload.app.id, response.data.attributes.appId);
- assert.equal(payload.app.state, response.data.attributes.state);
- assert.equal(payload.app.user, response.data.attributes.user);
- assert.equal(response.data.attributes.containers, undefined);
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-container-test.js
deleted file mode 100644
index 1f08467..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-container-test.js
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('serializer:yarn-node-container', 'Unit | Serializer | NodeContainer', {
-});
-
-test('Basic creation test', function(assert) {
- let serializer = this.subject();
-
- assert.ok(serializer);
- assert.ok(serializer.normalizeSingleResponse);
- assert.ok(serializer.normalizeArrayResponse);
- assert.ok(serializer.internalNormalizeSingleResponse);
-});
-
-test('normalizeArrayResponse test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-node-container"
- },
- payload = {
- containers: {
- container: [{
- id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
- exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
- totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
- "containerlogs/container_e32_1456000363780_0002_01_000001/root",
- nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
- "stdout"]
- },{
- id:"container_e32_1456000363780_0002_01_000003", state:"RUNNING",
- exitCode:-1000, diagnostics:"", user:"root", totalMemoryNeededMB:1024,
- totalVCoresNeeded:1,containerLogsLink:"http://localhost:8042/node" +
- "/containerlogs/container_e32_1456000363780_0002_01_000003/root",
- nodeId:"localhost:64318",containerLogFiles:["syslog","stderr",
- "syslog.shuffle","stdout"]
- }]
- }
- };
- assert.expect(14);
- var response =
- serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
- assert.ok(response.data);
- assert.equal(response.data.length, 2);
- assert.equal(response.data[0].id,
- "container_e32_1456000363780_0002_01_000001");
- assert.equal(response.data[1].id,
- "container_e32_1456000363780_0002_01_000003");
- assert.equal(response.data[0].attributes.containerLogFiles.length, 3);
- assert.equal(response.data[1].attributes.containerLogFiles.length, 4);
- for (var i = 0; i < 2; i++) {
- assert.equal(response.data[i].type, modelClass.modelName);
- assert.deepEqual(response.data[i].attributes.containerLogFiles,
- payload.containers.container[i].containerLogFiles);
- assert.equal(response.data[i].attributes.state,
- payload.containers.container[i].state);
- assert.equal(response.data[i].attributes.user,
- payload.containers.container[i].user);
- }
-});
-
-test('normalizeArrayResponse no containers test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-node-container"
- },
- payload = { containers: null };
- assert.expect(5);
- var response =
- serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
- assert.ok(response.data);
- assert.equal(response.data.length, 1);
- assert.equal(response.data[0].type, modelClass.modelName);
- assert.equal(response.data[0].id, "dummy");
- assert.equal(response.data[0].attributes.containerId, undefined);
-});
-
-test('normalizeSingleResponse test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-node-container"
- },
- payload = {
- container: {
- id: "container_e32_1456000363780_0002_01_000001", state: "RUNNING",
- exitCode:-1000,diagnostics:"",user:"root",totalMemoryNeededMB:2048,
- totalVCoresNeeded:1,containerLogsLink: "http://localhost:8042/node/" +
- "containerlogs/container_e32_1456000363780_0002_01_000001/root",
- nodeId: "localhost:64318", containerLogFiles:["syslog","stderr",
- "stdout"]
- }
- };
- assert.expect(11);
- var response =
- serializer.normalizeSingleResponse({}, modelClass, payload, null, null);
- assert.ok(response.data);
- assert.equal(response.data.id, payload.container.id);
- assert.equal(response.data.type, modelClass.modelName);
- assert.equal(response.data.attributes.containerId, payload.container.id);
- assert.equal(response.data.attributes.state, payload.container.state);
- assert.equal(response.data.attributes.user, payload.container.user);
- assert.equal(response.data.attributes.exitCode, payload.container.exitCode);
- assert.equal(response.data.attributes.totalMemoryNeededMB,
- payload.container.totalMemoryNeeded);
- assert.equal(response.data.attributes.totalVCoresNeeded,
- payload.container.totalVCoresNeeded);
- assert.equal(response.data.attributes.containerLogFiles.length, 3);
- assert.deepEqual(response.data.attributes.containerLogFiles,
- payload.container.containerLogFiles);
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-test.js
deleted file mode 100644
index 0e76ccb..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-node-test.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-import Converter from 'yarn-ui/utils/converter';
-
-moduleFor('serializer:yarn-node', 'Unit | Serializer | Node', {
-});
-
-test('Basic creation test', function(assert) {
- let serializer = this.subject();
-
- assert.ok(serializer);
- assert.ok(serializer.normalizeSingleResponse);
- assert.ok(serializer.internalNormalizeSingleResponse);
-});
-
-test('normalizeSingleResponse test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-node"
- },
- payload = {
- nodeInfo: {
- healthReport: "Healthy", totalVmemAllocatedContainersMB: 344064,
- totalPmemAllocatedContainersMB: 163840,
- totalVCoresAllocatedContainers: 160,
- vmemCheckEnabled: true, pmemCheckEnabled: true,
- lastNodeUpdateTime: 1456250210310, nodeHealthy: true,
- nodeManagerVersion: "3.0.0-SNAPSHOT",
- nodeManagerBuildVersion: "3.0.0-SNAPSHOT",
- nodeManagerVersionBuiltOn: "2000-01-01T00:00Z",
- hadoopVersion: "3.0.0-SNAPSHOT",
- hadoopBuildVersion: "3.0.0-SNAPSHOT",
- hadoopVersionBuiltOn: "2000-01-01T00:00Z",
- id: "localhost:64318", nodeHostName: "192.168.0.102",
- nmStartupTime: 1456250208231
- }
- };
- assert.expect(6);
- var id = "localhost:64318";
- var response = serializer.normalizeSingleResponse({}, modelClass, payload, id, null);
- assert.equal(response.data.id, id);
- assert.equal(response.data.type, modelClass.modelName);
- assert.equal(response.data.attributes.totalVmemAllocatedContainersMB,
- payload.nodeInfo.totalVmemAllocatedContainersMB);
- assert.equal(response.data.attributes.totalPmemAllocatedContainersMB,
- payload.nodeInfo.totalPmemAllocatedContainersMB);
- assert.equal(response.data.attributes.totalVCoresAllocatedContainers,
- payload.nodeInfo.totalVCoresAllocatedContainers);
- assert.equal(response.data.attributes.nmStartupTime,
- Converter.timeStampToDate(payload.nodeInfo.nmStartupTime));
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-rm-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-rm-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-rm-node-test.js
deleted file mode 100644
index bc6397d..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-rm-node-test.js
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * 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.
- */
-
-import { moduleFor, test } from 'ember-qunit';
-
-moduleFor('serializer:yarn-rm-node', 'Unit | Serializer | RMNode', {
-});
-
-test('Basic creation test', function(assert) {
- let serializer = this.subject();
-
- assert.ok(serializer);
- assert.ok(serializer.normalizeSingleResponse);
- assert.ok(serializer.normalizeArrayResponse);
- assert.ok(serializer.internalNormalizeSingleResponse);
-});
-
-test('normalizeArrayResponse test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-rm-node"
- },
- payload = {
- nodes: {
- node: [{
- rack: "/default-rack", state: "RUNNING", id: "192.168.1.1:64318",
- nodeHostName: "192.168.1.1", nodeHTTPAddress: "192.168.1.1:8042",
- lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
- healthReport: "", numContainers: 0, usedMemoryMB: 2048,
- availMemoryMB: 161792, usedVirtualCores: 2,
- availableVirtualCores: 158, nodeLabels: ["x"],
- resourceUtilization: {
- nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
- nodeCPUUsage: 0.14995001256465912,
- aggregatedContainersPhysicalMemoryMB: 0,
- aggregatedContainersVirtualMemoryMB: 0,
- containersCPUUsage: 0
- }
- },{
- rack: "/default-rack", state: "RUNNING", id: "192.168.1.2:64318",
- nodeHostName: "192.168.1.2", nodeHTTPAddress: "192.168.1.2:8042",
- lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
- healthReport: "", numContainers: 0, usedMemoryMB: 0,
- availMemoryMB: 163840, usedVirtualCores: 0,
- availableVirtualCores: 160, nodeLabels: ["y"],
- resourceUtilization: {
- nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
- nodeCPUUsage: 0.14995001256465912,
- aggregatedContainersPhysicalMemoryMB: 0,
- aggregatedContainersVirtualMemoryMB: 0,
- containersCPUUsage: 0
- }
- }]
- }
- };
- assert.expect(12);
- var response =
- serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
- assert.ok(response.data);
- assert.equal(response.data.length, 2);
- assert.equal(response.data[0].id, "192.168.1.1:64318");
- assert.equal(response.data[1].id, "192.168.1.2:64318");
- for (var i = 0; i < 2; i++) {
- assert.equal(response.data[i].type, modelClass.modelName);
- assert.equal(response.data[i].attributes.nodeHostName,
- payload.nodes.node[i].nodeHostName);
- assert.equal(response.data[i].attributes.nodeHTTPAddress,
- payload.nodes.node[i].nodeHTTPAddress);
- assert.deepEqual(response.data[i].attributes.nodeLabels,
- payload.nodes.node[i].nodeLabels);
- }
-});
-
-test('normalizeArrayResponse no nodes test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-rm-node"
- },
- payload = { nodes: null };
- assert.expect(5);
- var response =
- serializer.normalizeArrayResponse({}, modelClass, payload, null, null);
- console.log(response);
- assert.ok(response.data);
- assert.equal(response.data.length, 1);
- assert.equal(response.data[0].type, modelClass.modelName);
- assert.equal(response.data[0].id, "dummy");
- assert.equal(response.data[0].attributes.nodeHostName, undefined);
-});
-
-test('normalizeSingleResponse test', function(assert) {
- let serializer = this.subject(),
- modelClass = {
- modelName: "yarn-rm-node"
- },
- payload = {
- node: {
- rack: "/default-rack", state: "RUNNING", id: "192.168.1.1:64318",
- nodeHostName: "192.168.1.1", nodeHTTPAddress: "192.168.1.1:8042",
- lastHealthUpdate: 1456251290905, version: "3.0.0-SNAPSHOT",
- healthReport: "", numContainers: 0, usedMemoryMB: 2048,
- availMemoryMB: 161792, usedVirtualCores: 2,
- availableVirtualCores: 158, nodeLabels: ["x"],
- resourceUtilization: {
- nodePhysicalMemoryMB: 4549, nodeVirtualMemoryMB: 4549,
- nodeCPUUsage: 0.14995001256465912,
- aggregatedContainersPhysicalMemoryMB: 0,
- aggregatedContainersVirtualMemoryMB: 0,
- containersCPUUsage: 0
- }
- }
- };
- assert.expect(13);
- var id = "localhost:64318";
- var response =
- serializer.normalizeSingleResponse({}, modelClass, payload, id, null);
- assert.ok(response.data);
- assert.equal(response.data.id, id);
- assert.equal(response.data.type, modelClass.modelName);
- assert.equal(response.data.attributes.rack, payload.node.rack);
- assert.equal(response.data.attributes.state, payload.node.state);
- assert.equal(response.data.attributes.nodeHostName,
- payload.node.nodeHostName);
- assert.equal(response.data.attributes.nodeHTTPAddress,
- payload.node.nodeHTTPAddress);
- assert.equal(response.data.attributes.version, payload.node.version);
- assert.equal(response.data.attributes.availMemoryMB,
- payload.node.availMemoryMB);
- assert.equal(response.data.attributes.usedMemoryMB,
- payload.node.usedMemoryMB);
- assert.equal(response.data.attributes.availableVirtualCores,
- payload.node.availableVirtualCores);
- assert.equal(response.data.attributes.usedVirtualCores,
- payload.node.usedVirtualCores);
- assert.deepEqual(response.data.attributes.nodeLabels,
- payload.node.nodeLabels);
-});
-
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
deleted file mode 100644
index 481537d..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * 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.
- */
-
-import converter from '../../../utils/converter';
-import { module, test } from 'qunit';
-
-module('Unit | Utility | Converter');
-
-// Replace this with your real tests.
-test('it works', function(assert) {
- assert.ok(converter);
- assert.ok(converter.splitForContainerLogs);
-});
-
-test('split for container logs', function(assert) {
- var id = "localhost:64318!container_e32_1456000363780_0002_01_000001!" +
- "syslog";
- var arr = converter.splitForContainerLogs(id);
- assert.ok(arr);
- assert.deepEqual(arr, ["localhost:64318",
- "container_e32_1456000363780_0002_01_000001", "syslog"]);
- id = "localhost:64318!container_e32_1456000363780_0002_01_000001!" +
- "syslog!logs";
- arr = converter.splitForContainerLogs(id);
- assert.ok(arr);
- assert.deepEqual(arr, ["localhost:64318",
- "container_e32_1456000363780_0002_01_000001", "syslog!logs"]);
- id = "localhost:64318!container_e32_1456000363780_0002_01_000001";
- arr = converter.splitForContainerLogs(id);
- assert.notOk(arr);
- id = null;
- arr = converter.splitForContainerLogs(id);
- assert.notOk(arr);
- id = undefined;
- arr = converter.splitForContainerLogs(id);
- assert.notOk(arr);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/sorter-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/sorter-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/sorter-test.js
deleted file mode 100644
index 8f17380..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/sorter-test.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * 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.
- */
-
-import Sorter from 'yarn-ui/utils/sorter';
-import { module, test } from 'qunit';
-
-module('Unit | Utility | Sorter');
-
-test('Basic creation test', function(assert) {
- assert.ok(Sorter);
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/vendor/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/vendor/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/vendor/.gitkeep
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/pom.xml b/hadoop-yarn-project/hadoop-yarn/pom.xml
index a41b928..ca78ef8 100644
--- a/hadoop-yarn-project/hadoop-yarn/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/pom.xml
@@ -230,6 +230,7 @@
</profiles>
<modules>
+ <module>hadoop-yarn-ui</module>
<module>hadoop-yarn-api</module>
<module>hadoop-yarn-common</module>
<module>hadoop-yarn-server</module>
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[20/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup
code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
new file mode 100644
index 0000000..66bf54a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
@@ -0,0 +1,207 @@
+<!--
+ 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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>hadoop-yarn</artifactId>
+ <groupId>org.apache.hadoop</groupId>
+ <version>3.0.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-yarn-ui</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <name>Apache Hadoop YARN UI</name>
+ <packaging>${packaging.type}</packaging>
+
+ <properties>
+ <packaging.type>jar</packaging.type>
+ <webappDir>src/main/webapp</webappDir>
+ <node.executable>node</node.executable>
+ <nodeVersion>v0.12.2</nodeVersion>
+ <npmVersion>2.10.0</npmVersion>
+ <skipTests>false</skipTests>
+ </properties>
+
+ <build>
+ <plugins>
+ <!-- Apache RAT -->
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>src/main/webapp/node_modules/**/*</exclude>
+ <exclude>src/main/webapp/bower_components/**/*</exclude>
+ <exclude>src/main/webapp/jsconfig.json</exclude>
+ <exclude>src/main/webapp/bower.json</exclude>
+ <exclude>src/main/webapp/package.json</exclude>
+ <exclude>src/main/webapp/testem.json</exclude>
+ <exclude>src/main/webapp/public/assets/images/**/*</exclude>
+ <exclude>src/main/webapp/public/robots.txt</exclude>
+ <exclude>public/crossdomain.xml</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <version>3.0.0</version>
+ <configuration>
+ <followSymLinks>false</followSymLinks>
+ <filesets>
+ <fileset>
+ <directory>${basedir}/src/main/webapp/bower_components</directory>
+ </fileset>
+ <fileset>
+ <directory>${basedir}/src/main/webapp/node_modules</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>yarn-ui</id>
+
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+
+ <properties>
+ <packaging.type>war</packaging.type>
+ </properties>
+
+ <build>
+ <plugins>
+ <!-- Bower install & grunt build-->
+ <plugin>
+ <artifactId>exec-maven-plugin</artifactId>
+ <groupId>org.codehaus.mojo</groupId>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <id>npm install</id>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <workingDirectory>${webappDir}</workingDirectory>
+ <executable>npm</executable>
+ <arguments>
+ <argument>install</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <phase>generate-sources</phase>
+ <id>bower install</id>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <workingDirectory>${webappDir}</workingDirectory>
+ <executable>bower</executable>
+ <arguments>
+ <argument>--allow-root</argument>
+ <argument>install</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <phase>generate-sources</phase>
+ <id>bower --allow-root install</id>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <workingDirectory>${webappDir}</workingDirectory>
+ <executable>bower</executable>
+ <arguments>
+ <argument>--allow-root</argument>
+ <argument>install</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>ember build</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <workingDirectory>${webappDir}</workingDirectory>
+ <executable>ember</executable>
+ <arguments>
+ <argument>build</argument>
+ <argument>-prod</argument>
+ <argument>--output-path</argument>
+ <argument>${basedir}/target/dist</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>ember test</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <skip>${skipTests}</skip>
+ <workingDirectory>${webappDir}</workingDirectory>
+ <executable>ember</executable>
+ <arguments>
+ <argument>test</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>cleanup tmp</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <workingDirectory>${webappDir}</workingDirectory>
+ <executable>rm</executable>
+ <arguments>
+ <argument>-rf</argument>
+ <argument>tmp</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Package into war -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <webXml>${basedir}/src/main/webapp/WEB-INF/web.xml</webXml>
+ <warSourceDirectory>${basedir}/target/dist</warSourceDirectory>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/robots.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/robots.txt b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/robots.txt
deleted file mode 100644
index f591645..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/robots.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# http://www.robotstxt.org
-User-agent: *
-Disallow:
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/WEB-INF/web.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..ddb8532
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,25 @@
+<!--
+* 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.
+-->
+
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+ <display-name>YARN UI</display-name>
+</web-app>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-info.js
new file mode 100644
index 0000000..7dcbe61
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-info.js
@@ -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.
+ */
+
+import DS from 'ember-data';
+import Config from 'yarn-ui/config';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
+ namespace: 'ws/v1/cluster', // common const
+ pathForType(modelName) {
+ return ''; // move to some common place, return path by modelname.
+ },
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-metric.js
new file mode 100644
index 0000000..ad5ae0e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-metric.js
@@ -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.
+ */
+
+import DS from 'ember-data';
+import Config from 'yarn-ui/config';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
+ namespace: 'ws/v1/cluster/metrics', // common const
+ pathForType(modelName) {
+ return ''; // move to some common place, return path by modelname.
+ },
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
new file mode 100644
index 0000000..7b233bc
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
@@ -0,0 +1,50 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+import Config from 'yarn-ui/config';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
+ namespace: 'ws/v1/cluster', // common const
+
+ urlForQuery(query, modelName) {
+ var url = this._buildURL();
+ return url + '/apps/' + query.appId + "/appattempts";
+ },
+
+ urlForFindRecord(id, modelName, snapshot) {
+ var url = this._buildURL();
+ var url = url + '/apps/' +
+ Converter.attemptIdToAppId(id) + "/appattempts/" + id;
+ console.log(url);
+ return url;
+ },
+
+ ajax(url, method, hash) {
+ hash = {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
new file mode 100644
index 0000000..5cd888c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
@@ -0,0 +1,44 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Config from 'yarn-ui/config';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
+ namespace: 'ws/v1/cluster', // common const
+ pathForType(modelName) {
+ return 'apps'; // move to some common place, return path by modelname.
+ },
+ /*
+ urlForQuery(query, modelName) {
+ var url = this._buildURL();
+ return url + '/apps/' + query.appId + "/appattempts";
+ },
+ */
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
new file mode 100644
index 0000000..7838c98
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Ember from 'ember';
+import Converter from 'yarn-ui/utils/converter';
+
+/**
+ * REST URL's response when fetching container logs will be
+ * in plain text format and not JSON.
+ */
+export default DS.RESTAdapter.extend({
+ headers: {
+ Accept: 'text/plain'
+ },
+ host: 'http://localhost:1337/',
+ namespace: 'ws/v1/node',
+
+ urlForFindRecord(id, modelName, snapshot) {
+ var splits = Converter.splitForContainerLogs(id);
+ var nodeHttpAddr = splits[0];
+ var containerId = splits[1];
+ var filename = splits[2];
+ this.host = this.host + nodeHttpAddr;
+ var url = this._buildURL();
+ url = url + "/containerlogs/" + containerId + "/" + filename;
+ return url;
+ },
+
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "NM";
+ return this._super(url, method, hash);
+ },
+
+ /**
+ * Override options so that result is not expected to be JSON
+ */
+ ajaxOptions: function (url, type, options) {
+ var hash = options || {};
+ hash.url = url;
+ hash.type = type;
+ // Make sure jQuery does not try to convert response to JSON.
+ hash.dataType = 'text';
+ hash.context = this;
+
+ var headers = Ember.get(this, 'headers');
+ if (headers != undefined) {
+ hash.beforeSend = function (xhr) {
+ Object.keys(headers).forEach(function (key) {
+ return xhr.setRequestHeader(key, headers[key]);
+ });
+ };
+ }
+ return hash;
+ },
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container.js
new file mode 100644
index 0000000..67a37f7
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container.js
@@ -0,0 +1,61 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+import Config from 'yarn-ui/config';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ rmHost: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT,
+ tsHost: 'http://localhost:1337/' + Config.TS_HOST + ':' + Config.TS_PORT,
+ host: function() {
+ return undefined
+ }.property(),
+ rmNamespace: 'ws/v1/cluster',
+ tsNamespace: 'ws/v1/applicationhistory',
+ namespace: function() {
+ return undefined
+ }.property(),
+
+ urlForQuery(query, modelName) {
+ if (query.is_rm) {
+ this.set("host", this.rmHost);
+ this.set("namespace", this.rmNamespace);
+ } else {
+ this.set("host", this.tsHost);
+ this.set("namespace", this.tsNamespace);
+ }
+
+ var url = this._buildURL();
+ url = url + '/apps/' + Converter.attemptIdToAppId(query.app_attempt_id)
+ + "/appattempts/" + query.app_attempt_id + "/containers";
+ console.log(url);
+ return url;
+ },
+
+ ajax(url, method, hash) {
+ hash = {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
new file mode 100644
index 0000000..0c60d1f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
@@ -0,0 +1,63 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/',
+ namespace: 'ws/v1/node',
+
+ urlForQuery(query) {
+ this.host = this.host + query.nodeAddr;
+ var url = this._buildURL();
+ url = url + "/apps";
+ return url;
+ },
+
+ urlForQueryRecord: function (query) {
+ this.host = this.host + query.nodeAddr;
+ var url = this._buildURL();
+ url = url + "/apps/" + query.appId;
+ return url;
+ },
+
+ query: function (store, type, query) {
+ var url = this.urlForQuery(query);
+ // Query params not required.
+ query = null;
+ return this.ajax(url, 'GET', { data: query });
+ },
+
+ queryRecord: function (store, type, query) {
+ var url = this.urlForQueryRecord(query);
+ // Query params not required.
+ query = null;
+ return this.ajax(url, 'GET', { data: query });
+ },
+
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "NM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
new file mode 100644
index 0000000..e8bf7b7
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
@@ -0,0 +1,64 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/',
+ namespace: 'ws/v1/node',
+
+ urlForQuery(query) {
+ this.host = this.host + query.nodeHttpAddr;
+ var url = this._buildURL();
+ url = url + "/containers";
+ return url;
+ },
+
+ urlForQueryRecord(query) {
+ this.host = this.host + query.nodeHttpAddr;
+ var url = this._buildURL();
+ url = url + "/containers/" + query.containerId;
+ return url;
+ },
+
+ query: function (store, type, query) {
+ var url = this.urlForQuery(query);
+ // Query params not required.
+ query = null;
+ return this.ajax(url, 'GET', { data: query });
+ },
+
+ queryRecord: function (store, type, query) {
+ var url = this.urlForQueryRecord(query);
+ // Query params not required.
+ query = null;
+ console.log(url);
+ return this.ajax(url, 'GET', { data: query });
+ },
+
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "NM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
new file mode 100644
index 0000000..64f524a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/',
+ namespace: 'ws/v1/node',
+
+ urlForFindRecord(id, modelName, snapshot) {
+ this.host = this.host + id;
+ var url = this._buildURL();
+ return url;
+ },
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "NM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-queue.js
new file mode 100644
index 0000000..ebe7b39
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-queue.js
@@ -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.
+ */
+
+import DS from 'ember-data';
+import Config from 'yarn-ui/config';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
+ namespace: 'ws/v1/cluster', // common const
+ pathForType(modelName) {
+ return 'scheduler'; // move to some common place, return path by modelname.
+ },
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-rm-node.js
new file mode 100644
index 0000000..c6ad6f3
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-rm-node.js
@@ -0,0 +1,45 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Config from 'yarn-ui/config';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT,
+ namespace: 'ws/v1/cluster',
+ pathForType(modelName) {
+ return 'nodes';
+ },
+
+ urlForFindRecord(id, modelName, snapshot) {
+ var url = this._buildURL();
+ url = url + "/nodes/" + id;
+ return url;
+ },
+
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/app.js
new file mode 100644
index 0000000..5617953
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/app.js
@@ -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.
+ */
+
+import Ember from 'ember';
+import Resolver from 'ember/resolver';
+import loadInitializers from 'ember/load-initializers';
+import config from './config/environment';
+import Sorter from 'yarn-ui/utils/sorter';
+
+var App;
+
+Ember.MODEL_FACTORY_INJECTIONS = true;
+
+App = Ember.Application.extend({
+ modulePrefix: config.modulePrefix,
+ podModulePrefix: config.podModulePrefix,
+ Resolver: Resolver
+});
+
+loadInitializers(App, config.modulePrefix);
+Sorter.initDataTableSorter();
+
+export default App;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-attempt-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-attempt-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-attempt-table.js
new file mode 100644
index 0000000..4b741b8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-attempt-table.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-table.js
new file mode 100644
index 0000000..4b741b8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-table.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
new file mode 100644
index 0000000..8e48279
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
@@ -0,0 +1,122 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import BaseChartComponent from 'yarn-ui/components/base-chart-component';
+
+export default BaseChartComponent.extend({
+ // data:
+ // [{label=label1, value=value1}, ...]
+ // ...
+ renderBarChart: function(data, title, textWidth = 50) {
+ var g = this.chart.g;
+ var layout = this.getLayout();
+ this.renderTitleAndBG(g, title, layout);
+
+ var maxValue = -1;
+ for (var i = 0; i < data.length; i++) {
+ if (data[i] instanceof Array) {
+ if (data[i][0].value > maxValue) {
+ maxValue = data[i][0].value;
+ }
+ } else {
+ if (data[i].value > maxValue) {
+ maxValue = data[i].value;
+ }
+ }
+ }
+
+ var singleBarHeight = 30;
+
+ // 50 is for text
+ var maxBarWidth = layout.x2 - layout.x1 - 2 * layout.margin - textWidth - 50;
+
+ // 30 is for title
+ var maxBarsHeight = layout.y2 - layout.y1 - 2 * layout.margin - 30;
+ var gap = (maxBarsHeight - data.length * singleBarHeight) / (data.length -
+ 1);
+
+ var xScaler = d3.scale.linear()
+ .domain([0, maxValue])
+ .range([0, maxBarWidth]);
+
+ // show bar text
+ for (var i = 0; i < data.length; i++) {
+ g.append("text")
+ .text(
+ function() {
+ return data[i].label;
+ })
+ .attr("y", function() {
+ return layout.y1 + singleBarHeight / 2 + layout.margin + (gap +
+ singleBarHeight) * i + 30;
+ })
+ .attr("x", layout.x1 + layout.margin);
+ }
+
+ // show bar
+ var bar = g.selectAll("bars")
+ .data(data)
+ .enter()
+ .append("rect")
+ .attr("y", function(d, i) {
+ return layout.y1 + 30 + layout.margin + (gap + singleBarHeight) * i;
+ })
+ .attr("x", layout.x1 + layout.margin + textWidth)
+ .attr("height", singleBarHeight)
+ .attr("fill", function(d, i) {
+ return this.colors[i];
+ }.bind(this))
+ .attr("width", 0);
+
+ this.bindTooltip(bar);
+
+ bar.transition()
+ .duration(500)
+ .attr("width", function(d) {
+ var w;
+ w = xScaler(d.value);
+ // At least each item has 3 px
+ w = Math.max(w, 3);
+ return w;
+ });
+
+ // show bar value
+ for (var i = 0; i < data.length; i++) {
+ g.append("text")
+ .text(
+ function() {
+ return data[i].value;
+ })
+ .attr("y", function() {
+ return layout.y1 + singleBarHeight / 2 + layout.margin + (gap +
+ singleBarHeight) * i + 30;
+ })
+ .attr("x", layout.x1 + layout.margin + textWidth + 15 + xScaler(data[i].value));
+ }
+ },
+
+ draw: function() {
+ this.initChart();
+ this.renderBarChart(this.get("data"), this.get("title"), this.get("textWidth"));
+ },
+
+ didInsertElement: function() {
+ this.draw();
+ },
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-chart-component.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-chart-component.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-chart-component.js
new file mode 100644
index 0000000..b85b6ab4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-chart-component.js
@@ -0,0 +1,127 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+ chart: undefined,
+ tooltip : undefined,
+ colors: d3.scale.category10().range(),
+
+ initChart: function() {
+ this.chart = {
+ svg: undefined,
+ g: undefined,
+ h: 0,
+ w: 0,
+ tooltip: undefined
+ };
+
+ // Init tooltip if it is not initialized
+ this.tooltip = d3.select("#chart-tooltip");
+ if (!this.tooltip) {
+ this.tooltip = d3.select("body")
+ .append("div")
+ .attr("class", "tooltip")
+ .attr("id", "chart-tooltip")
+ .style("opacity", 0);
+ }
+
+ // Init svg
+ var svg = this.chart.svg;
+ if (svg) {
+ svg.remove();
+ }
+
+ var parentId = this.get("parentId");
+ var parent = d3.select("#" + parentId);
+ var bbox = parent.node().getBoundingClientRect();
+ this.chart.w = bbox.width - 30;
+
+ var ratio = 0.75; // 4:3 by default
+ if (this.get("ratio")) {
+ ratio = this.get("ratio");
+ }
+ this.chart.h = bbox.width * ratio;
+
+ if (this.get("maxHeight")) {
+ this.chart.h = Math.min(this.get("maxHeight"), this.chart.h);
+ }
+
+ this.chart.svg = parent.append("svg")
+ .attr("width", this.chart.w)
+ .attr("height", this.chart.h);
+
+ this.chart.g = this.chart.svg.append("g");
+ },
+
+ renderTitleAndBG: function(g, title, layout) {
+ var bg = g.append("g");
+ bg.append("text")
+ .text(title)
+ .attr("x", (layout.x1 + layout.x2) / 2)
+ .attr("y", layout.y1 + layout.margin + 20)
+ .attr("class", "chart-title");
+
+ bg.append("rect")
+ .attr("x", layout.x1)
+ .attr("y", layout.y1)
+ .attr("width", layout.x2 - layout.x1)
+ .attr("height", layout.y2 - layout.y1)
+ .attr("class", "chart-frame");
+ },
+
+ bindTooltip: function(d) {
+ d.on("mouseover", function(d) {
+ this.tooltip
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mousemove", function(d) {
+ // Handle pie chart case
+ var data = d;
+ if (d.data) {
+ data = d.data;
+ }
+
+ this.tooltip.style("opacity", .9);
+ this.tooltip.html(data.label + " = " + data.value)
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mouseout", function(d) {
+ this.tooltip.style("opacity", 0);
+ }.bind(this));
+ },
+
+ getLayout: function() {
+ var x1 = 0;
+ var y1 = 0;
+ var x2 = this.chart.w;
+ var y2 = this.chart.h;
+
+ var layout = {
+ x1: x1,
+ y1: y1,
+ x2: x2 - 10,
+ y2: y2 - 10,
+ margin: 10
+ };
+ return layout;
+ },
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/container-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/container-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/container-table.js
new file mode 100644
index 0000000..4b741b8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/container-table.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
new file mode 100644
index 0000000..e6dcb12
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
@@ -0,0 +1,166 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import BaseChartComponent from 'yarn-ui/components/base-chart-component';
+
+export default BaseChartComponent.extend({
+ /*
+ * data = [{label="xx", value=},{...}]
+ */
+ renderDonutChart: function(data, title, showLabels = false,
+ middleLabel = "Total", middleValue = undefined) {
+ var g = this.chart.g;
+ var layout = this.getLayout();
+ this.renderTitleAndBG(g, title, layout);
+
+ var total = 0;
+ var allZero = true;
+ for (var i = 0; i < data.length; i++) {
+ total += data[i].value;
+ if (data[i].value > 1e-6) {
+ allZero = false;
+ }
+ }
+
+ if (!middleValue) {
+ middleValue = total;
+ }
+
+ //Width and height
+ var h = layout.y2 - layout.y1;
+
+ // 50 is for title
+ var outerRadius = (h - 50 - 2 * layout.margin) / 2;
+ var innerRadius = outerRadius * 0.618;
+ var arc = d3.svg.arc()
+ .innerRadius(innerRadius)
+ .outerRadius(outerRadius);
+
+ var cx;
+ var cy = layout.y1 + 50 + layout.margin + outerRadius;
+ if (showLabels) {
+ cx = layout.x1 + layout.margin + outerRadius;
+ } else {
+ cx = (layout.x1 + layout.x2) / 2;
+ }
+
+ var pie = d3.layout.pie();
+ pie.sort(null);
+ pie.value(function(d) {
+ var v = d.value;
+ // make sure it > 0
+ v = Math.max(v, 1e-6);
+ return v;
+ });
+
+ //Set up groups
+ var arcs = g
+ .selectAll("g.arc")
+ .data(pie(data))
+ .enter()
+ .append("g")
+ .attr("class", "arc")
+ .attr("transform", "translate(" + cx + "," + cy + ")");
+
+ function tweenPie(finish) {
+ var start = {
+ startAngle: 0,
+ endAngle: 0
+ };
+ var i = d3.interpolate(start, finish);
+ return function(d) {
+ return arc(i(d));
+ };
+ }
+
+ //Draw arc paths
+ var path = arcs.append("path")
+ .attr("fill", function(d, i) {
+ if (d.value > 1e-6) {
+ return this.colors[i];
+ } else {
+ return "white";
+ }
+ }.bind(this))
+ .attr("d", arc)
+ .attr("stroke", function(d, i) {
+ if (allZero) {
+ return this.colors[i];
+ }
+ }.bind(this))
+ .attr("stroke-dasharray", function(d, i) {
+ if (d.value <= 1e-6) {
+ return "10,10";
+ }
+ }.bind(this));
+ this.bindTooltip(path);
+
+ // Show labels
+ if (showLabels) {
+ var lx = layout.x1 + layout.margin + outerRadius * 2 + 30;
+ var squareW = 15;
+ var margin = 10;
+
+ var select = g.selectAll(".rect")
+ .data(data)
+ .enter();
+ select.append("rect")
+ .attr("fill", function(d, i) {
+ return this.colors[i];
+ }.bind(this))
+ .attr("x", lx)
+ .attr("y", function(d, i) {
+ return layout.y1 + 50 + (squareW + margin) * i + layout.margin;
+ })
+ .attr("width", squareW)
+ .attr("height", squareW);
+ select.append("text")
+ .attr("x", lx + squareW + margin)
+ .attr("y", function(d, i) {
+ return layout.y1 + 50 + (squareW + margin) * i + layout.margin + squareW / 2;
+ })
+ .text(function(d) {
+ return d.label + ' = ' + d.value;
+ });
+ }
+
+ if (middleLabel) {
+ var highLightColor = this.colors[0];
+ g.append("text").text(middleLabel).attr("x", cx).attr("y", cy - 10).
+ attr("class", "donut-highlight-text").attr("fill", highLightColor);
+ g.append("text").text(middleValue).attr("x", cx).attr("y", cy + 20).
+ attr("class", "donut-highlight-text").attr("fill", highLightColor).
+ style("font-size", "30px");
+ }
+
+ path.transition()
+ .duration(500)
+ .attrTween('d', tweenPie);
+ },
+
+ draw: function() {
+ this.initChart();
+ this.renderDonutChart(this.get("data"), this.get("title"), this.get("showLabels"),
+ this.get("middleLabel"), this.get("middleValue"));
+ },
+
+ didInsertElement: function() {
+ this.draw();
+ },
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/item-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/item-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/item-selector.js
new file mode 100644
index 0000000..235e438
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/item-selector.js
@@ -0,0 +1,39 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+ didInsertElement: function() {
+ $(".js-example-basic-single").select2(
+ {
+ width: '100%',
+ placeholder: "Select a queue"
+ });
+ var elementId = this.get("element-id");
+ var prefix = this.get("prefix");
+
+ var element = d3.select("#" + elementId);
+
+ if (element) {
+ this.get("model").forEach(function(o) {
+ element.append("option").attr("value", o.get("name")).text(prefix + o.get("name"));
+ });
+ }
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-configuration-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-configuration-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-configuration-table.js
new file mode 100644
index 0000000..4b741b8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-configuration-table.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-navigator.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-navigator.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-navigator.js
new file mode 100644
index 0000000..4b741b8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-navigator.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-view.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-view.js
new file mode 100644
index 0000000..2a90771
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-view.js
@@ -0,0 +1,290 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import ChartUtilsMixin from 'yarn-ui/mixins/charts-utils';
+
+export default Ember.Component.extend(ChartUtilsMixin, {
+ queues: {
+ data: undefined,
+ foldedQueues: {},
+ selectedQueueCircle: undefined,
+ maxDepth: -1,
+ },
+
+ queueColors: d3.scale.category20().range(),
+
+ renderQueue: function (now, depth, sequence) {
+ if (depth > this.queues.maxDepth) {
+ this.queues.maxDepth = depth;
+ }
+
+ var cx = 20 + depth * 30;
+ var cy = 20 + sequence * 30;
+ var name = now.get("name");
+
+ var g = this.queues.dataGroup.append("g")
+ .attr("id", "queue-" + name + "-g");
+
+ var folded = this.queues.foldedQueues[name];
+ var isParentQueue = false;
+
+ // render its children
+ var children = [];
+ var childrenNames = now.get("children");
+ if (childrenNames) {
+ childrenNames.forEach(function (name) {
+ isParentQueue = true;
+ var child = this.queues.data[name];
+ if (child) {
+ children.push(child);
+ }
+ }.bind(this));
+ }
+ if (folded) {
+ children = [];
+ }
+ var linefunction = d3.svg.line()
+ .interpolate("basis")
+ .x(function (d) {
+ return d.x;
+ })
+ .y(function (d) {
+ return d.y;
+ });
+
+ for (var i = 0; i < children.length; i++) {
+ sequence = sequence + 1;
+ // Get center of children queue
+ var cc = this.renderQueue(children[i],
+ depth + 1, sequence);
+ g.append("path")
+ .attr("class", "queue")
+ .attr("d", linefunction([{
+ x: cx,
+ y: cy
+ }, {
+ x: cc.x - 20,
+ y: cc.y
+ }, cc]));
+ }
+
+ var circle = g.append("circle")
+ .attr("cx", cx)
+ .attr("cy", cy)
+ .attr("class", "queue");
+
+ circle.on('mouseover', function () {
+ circle.style("fill", this.queueColors[1]);
+ }.bind(this));
+ circle.on('mouseout', function () {
+ if (circle != this.queues.selectedQueueCircle) {
+ circle.style("fill", this.queueColors[0]);
+ }
+ }.bind(this));
+ circle.on('click', function () {
+ circle.style("fill", this.queueColors[2]);
+ var pre = this.queues.selectedQueueCircle;
+ this.queues.selectedQueueCircle = circle;
+ if (pre) {
+ pre.on('mouseout')();
+ }
+ this.renderCharts(name);
+ }.bind(this));
+ circle.on('dblclick', function () {
+ if (!isParentQueue) {
+ return;
+ }
+
+ if (this.queues.foldedQueues[name]) {
+ delete this.queues.foldedQueues[name];
+ } else {
+ this.queues.foldedQueues[name] = now;
+ }
+ this.renderQueues();
+ }.bind(this));
+
+ var text = name;
+ if (folded) {
+ text = name + " (+)";
+ }
+
+ // print queue's name
+ g.append("text")
+ .attr("x", cx + 30)
+ .attr("y", cy + 5)
+ .text(text)
+ .attr("class", "queue");
+
+ return {
+ x: cx,
+ y: cy
+ };
+ },
+
+ renderQueues: function () {
+ if (this.queues.dataGroup) {
+ this.queues.dataGroup.remove();
+ }
+ // render queues
+ this.queues.dataGroup = this.canvas.svg.append("g")
+ .attr("id", "queues-g");
+ var rootQueue = undefined;
+
+ if (this.queues.data) {
+ this.renderQueue(this.queues.data['root'], 0, 0);
+
+ }
+ },
+
+ draw: function () {
+ this.queues.data = {};
+ this.get("model")
+ .forEach(function (o) {
+ this.queues.data[o.id] = o;
+ }.bind(this));
+
+ // get w/h of the svg
+ var bbox = d3.select("#main-container")
+ .node()
+ .getBoundingClientRect();
+ this.canvas.w = bbox.width;
+ this.canvas.h = Math.max(Object.keys(this.queues.data)
+ .length * 35, 1500);
+
+ this.canvas.svg = d3.select("#main-container")
+ .append("svg")
+ .attr("width", this.canvas.w)
+ .attr("height", this.canvas.h)
+ .attr("id", "main-svg");
+
+ this.renderBackground();
+
+ this.renderQueues();
+ this.renderCharts("root");
+ },
+
+ didInsertElement: function () {
+ this.draw();
+ },
+
+ /*
+ * data = [{label="xx", value=},{...}]
+ */
+ renderTable: function (data, title, layout) {
+ d3.select("#main-svg")
+ .append('table')
+ .selectAll('tr')
+ .data(data)
+ .enter()
+ .append('tr')
+ .selectAll('td')
+ .data(function (d) {
+ return d;
+ })
+ .enter()
+ .append('td')
+ .text(function (d) {
+ return d;
+ });
+ },
+
+ renderQueueCapacities: function (queue, layout) {
+ // Render bar chart
+ this.renderBarChart(this.charts.g, [{
+ label: "Cap",
+ value: queue.get("capacity")
+ }, {
+ label: "MaxCap",
+ value: queue.get("maxCapacity")
+ }, {
+ label: "UsedCap",
+ value: queue.get("usedCapacity")
+ }], "Queue Capacities", layout, 60);
+ },
+
+ renderChildrenCapacities: function (queue, layout) {
+ var data = [];
+ var children = queue.get("children");
+ if (children) {
+ for (var i = 0; i < children.length; i++) {
+ var child = this.queues.data[children[i]];
+ data.push({
+ label: child.get("name"),
+ value: child.get("capacity")
+ });
+ }
+ }
+
+ this.renderDonutChart(this.charts.g, data, "Children Capacities", layout, true);
+ },
+
+ renderChildrenUsedCapacities: function (queue, layout) {
+ var data = [];
+ var children = queue.get("children");
+ if (children) {
+ for (var i = 0; i < children.length; i++) {
+ var child = this.queues.data[children[i]];
+ data.push({
+ label: child.get("name"),
+ value: child.get("usedCapacity")
+ });
+ }
+ }
+
+ this.renderDonutChart(this.charts.g, data, "Children Used Capacities", layout, true);
+ },
+
+ renderLeafQueueUsedCapacities: function (layout) {
+ var leafQueueUsedCaps = [];
+ for (var queueName in this.queues.data) {
+ var q = this.queues.data[queueName];
+ if ((!q.get("children")) || q.get("children")
+ .length == 0) {
+ // it's a leafqueue
+ leafQueueUsedCaps.push({
+ label: q.get("name"),
+ value: q.get("usedCapacity")
+ });
+ }
+ }
+
+ this.renderDonutChart(this.charts.g, leafQueueUsedCaps, "LeafQueues Used Capacities",
+ layout, true);
+ },
+
+ renderCharts: function (queueName) {
+ this.charts.leftBannerLen = this.queues.maxDepth * 30 + 100;
+ this.initCharts();
+
+ var queue = this.queues.data[queueName];
+ var idx = 0;
+
+ if (queue.get("name") == "root") {
+ this.renderLeafQueueUsedCapacities(this.getLayout(idx++));
+ }
+ if (queue.get("name") != "root") {
+ this.renderQueueCapacities(queue, this.getLayout(idx++));
+ }
+ if (queue.get("children") && queue.get("children")
+ .length > 0) {
+ this.renderChildrenCapacities(queue, this.getLayout(idx++));
+ this.renderChildrenUsedCapacities(queue, this.getLayout(idx++));
+ }
+ },
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/simple-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/simple-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/simple-table.js
new file mode 100644
index 0000000..e5da81a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/simple-table.js
@@ -0,0 +1,76 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+ didInsertElement: function() {
+ var paging = this.get("paging") ? true : this.get("paging");
+ var ordering = this.get("ordering") ? true : this.get("ordering");
+ var info = this.get("info") ? true : this.get("info");
+ var bFilter = this.get("bFilter") ? true : this.get("bFilter");
+
+ // Defines sorter for the columns if not default.
+ // Can also specify a custom sorter.
+ var i;
+ var colDefs = [];
+ if (this.get("colTypes")) {
+ var typesArr = this.get("colTypes").split(' ');
+ var targetsArr = this.get("colTargets").split(' ');
+ for (i = 0; i < typesArr.length; i++) {
+ console.log(typesArr[i] + " " + targetsArr[i]);
+ colDefs.push({
+ type: typesArr[i],
+ targets: parseInt(targetsArr[i])
+ });
+ }
+ }
+ // Defines initial column and sort order.
+ var orderArr = [];
+ if (this.get("colsOrder")) {
+ var cols = this.get("colsOrder").split(' ');
+ for (i = 0; i < cols.length; i++) {
+ var col = cols[i].split(',');
+ if (col.length != 2) {
+ continue;
+ }
+ var order = col[1].trim();
+ if (order != 'asc' && order != 'desc') {
+ continue;
+ }
+ var colOrder = [];
+ colOrder.push(parseInt(col[0]));
+ colOrder.push(order);
+ orderArr.push(colOrder);
+ }
+ }
+ if (orderArr.length == 0) {
+ var defaultOrder = [0, 'asc'];
+ orderArr.push(defaultOrder);
+ }
+ console.log(orderArr[0]);
+ Ember.$('#' + this.get('table-id')).DataTable({
+ "paging": paging,
+ "ordering": ordering,
+ "info": info,
+ "bFilter": bFilter,
+ "order": orderArr,
+ "columnDefs": colDefs
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
new file mode 100644
index 0000000..b92f4bf
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
@@ -0,0 +1,268 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import Converter from 'yarn-ui/utils/converter';
+
+export default Ember.Component.extend({
+ canvas: {
+ svg: undefined,
+ h: 0,
+ w: 0,
+ tooltip: undefined
+ },
+
+ clusterMetrics: undefined,
+ modelArr: [],
+ colors: d3.scale.category10().range(),
+ _selected: undefined,
+
+ selected: function() {
+ return this._selected;
+ }.property(),
+
+ tableComponentName: function() {
+ return "app-attempt-table";
+ }.property(),
+
+ setSelected: function(d) {
+ if (this._selected == d) {
+ return;
+ }
+
+ // restore color
+ if (this._selected) {
+ var dom = d3.select("#timeline-bar-" + this._selected.get("id"));
+ dom.attr("fill", this.colors[0]);
+ }
+
+ this._selected = d;
+ this.set("selected", d);
+ dom = d3.select("#timeline-bar-" + d.get("id"));
+ dom.attr("fill", this.colors[1]);
+ },
+
+ getPerItemHeight: function() {
+ var arrSize = this.modelArr.length;
+
+ if (arrSize < 20) {
+ return 30;
+ } else if (arrSize < 100) {
+ return 10;
+ } else {
+ return 2;
+ }
+ },
+
+ getPerItemGap: function() {
+ var arrSize = this.modelArr.length;
+
+ if (arrSize < 20) {
+ return 5;
+ } else if (arrSize < 100) {
+ return 1;
+ } else {
+ return 1;
+ }
+ },
+
+ getCanvasHeight: function() {
+ return (this.getPerItemHeight() + this.getPerItemGap()) * this.modelArr.length + 200;
+ },
+
+ draw: function(start, end) {
+ // get w/h of the svg
+ var bbox = d3.select("#" + this.get("parent-id"))
+ .node()
+ .getBoundingClientRect();
+ this.canvas.w = bbox.width;
+ this.canvas.h = this.getCanvasHeight();
+
+ this.canvas.svg = d3.select("#" + this.get("parent-id"))
+ .append("svg")
+ .attr("width", this.canvas.w)
+ .attr("height", this.canvas.h)
+ .attr("id", this.get("my-id"));
+ this.renderTimeline(start, end);
+ },
+
+ renderTimeline: function(start, end) {
+ var border = 30;
+ var singleBarHeight = this.getPerItemHeight();
+ var gap = this.getPerItemGap();
+ var textWidth = 50;
+ /*
+ start-time end-time
+ |--------------------------------------|
+ ==============
+ ==============
+ ==============
+ ===============
+ */
+ var xScaler = d3.scale.linear()
+ .domain([start, end])
+ .range([0, this.canvas.w - 2 * border - textWidth]);
+
+ /*
+ * Render frame of timeline view
+ */
+ this.canvas.svg.append("line")
+ .attr("x1", border + textWidth)
+ .attr("y1", border - 5)
+ .attr("x2", this.canvas.w - border)
+ .attr("y2", border - 5)
+ .attr("class", "chart");
+
+ this.canvas.svg.append("line")
+ .attr("x1", border + textWidth)
+ .attr("y1", border - 10)
+ .attr("x2", border + textWidth)
+ .attr("y2", border - 5)
+ .attr("class", "chart");
+
+ this.canvas.svg.append("line")
+ .attr("x1", this.canvas.w - border)
+ .attr("y1", border - 10)
+ .attr("x2", this.canvas.w - border)
+ .attr("y2", border - 5)
+ .attr("class", "chart");
+
+ this.canvas.svg.append("text")
+ .text(Converter.timeStampToDate(start))
+ .attr("y", border - 15)
+ .attr("x", border + textWidth)
+ .attr("class", "bar-chart-text")
+ .attr("text-anchor", "left");
+
+ this.canvas.svg.append("text")
+ .text(Converter.timeStampToDate(end))
+ .attr("y", border - 15)
+ .attr("x", this.canvas.w - border)
+ .attr("class", "bar-chart-text")
+ .attr("text-anchor", "end");
+
+ // show bar
+ var bar = this.canvas.svg.selectAll("bars")
+ .data(this.modelArr)
+ .enter()
+ .append("rect")
+ .attr("y", function(d, i) {
+ return border + (gap + singleBarHeight) * i;
+ })
+ .attr("x", function(d, i) {
+ return border + textWidth + xScaler(d.get("startTs"));
+ })
+ .attr("height", singleBarHeight)
+ .attr("fill", function(d, i) {
+ return this.colors[0];
+ }.bind(this))
+ .attr("width", function(d, i) {
+ var finishedTs = xScaler(d.get("finishedTs"));
+ finishedTs = finishedTs > 0 ? finishedTs : xScaler(end);
+ return finishedTs - xScaler(d.get("startTs"));
+ })
+ .attr("id", function(d, i) {
+ return "timeline-bar-" + d.get("id");
+ });
+ bar.on("click", function(d) {
+ this.setSelected(d);
+ }.bind(this));
+
+ this.bindTooltip(bar);
+
+ if (this.modelArr.length <= 20) {
+ // show bar texts
+ for (var i = 0; i < this.modelArr.length; i++) {
+ this.canvas.svg.append("text")
+ .text(this.modelArr[i].get(this.get("label")))
+ .attr("y", border + (gap + singleBarHeight) * i + singleBarHeight / 2)
+ .attr("x", border)
+ .attr("class", "bar-chart-text");
+ }
+ }
+ },
+
+ bindTooltip: function(d) {
+ d.on("mouseover", function(d) {
+ this.tooltip
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mousemove", function(d) {
+ this.tooltip.style("opacity", .9);
+ this.tooltip.html(d.get("tooltipLabel"))
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mouseout", function(d) {
+ this.tooltip.style("opacity", 0);
+ }.bind(this));
+ },
+
+ initTooltip: function() {
+ this.tooltip = d3.select("body")
+ .append("div")
+ .attr("class", "tooltip")
+ .attr("id", "chart-tooltip")
+ .style("opacity", 0);
+ },
+
+ didInsertElement: function() {
+ // init tooltip
+ this.initTooltip();
+
+ // init model
+ if (this.get("rmModel")) {
+ this.get("rmModel").forEach(function(o) {
+ this.modelArr.push(o);
+ }.bind(this));
+ }
+
+ if (this.get("tsModel")) {
+ this.get("tsModel").forEach(function(o) {
+ this.modelArr.push(o);
+ }.bind(this));
+ }
+
+ this.modelArr.sort(function(a, b) {
+ var tsA = a.get("startTs");
+ var tsB = b.get("startTs");
+
+ return tsA - tsB;
+ });
+ if (this.modelArr.length > 0) {
+ var begin = this.modelArr[0].get("startTs");
+ }
+ var end = 0;
+ for (var i = 0; i < this.modelArr.length; i++) {
+ var ts = this.modelArr[i].get("finishedTs");
+ if (ts > end) {
+ end = ts;
+ }
+ }
+ if (end < begin) {
+ end = Date.now();
+ }
+
+ this.draw(begin, end);
+
+ if (this.modelArr.length > 0) {
+ this.setSelected(this.modelArr[0]);
+ }
+ },
+});
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[10/50] [abbrv] hadoop git commit: YARN-4517. Add nodes page and fix
bunch of license issues. (Varun Saxena via wangda)
Posted by su...@apache.org.
YARN-4517. Add nodes page and fix bunch of license issues. (Varun Saxena via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/cfd86e68
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/cfd86e68
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/cfd86e68
Branch: refs/heads/YARN-3368
Commit: cfd86e68306ff149bb50aca6bac433f280680236
Parents: 7dca449
Author: Wangda Tan <wa...@apache.org>
Authored: Mon Mar 21 13:13:02 2016 -0700
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn-ui/app/adapters/cluster-info.js | 5 +-
.../app/adapters/cluster-metric.js | 5 +-
.../app/adapters/yarn-app-attempt.js | 3 +-
.../hadoop-yarn-ui/app/adapters/yarn-app.js | 3 +-
.../app/adapters/yarn-container-log.js | 74 +++++++++
.../app/adapters/yarn-container.js | 5 +-
.../app/adapters/yarn-node-app.js | 63 ++++++++
.../app/adapters/yarn-node-container.js | 64 ++++++++
.../hadoop-yarn-ui/app/adapters/yarn-node.js | 40 +++++
.../hadoop-yarn-ui/app/adapters/yarn-queue.js | 3 +-
.../hadoop-yarn-ui/app/adapters/yarn-rm-node.js | 45 ++++++
.../app/components/simple-table.js | 38 ++++-
.../hadoop-yarn/hadoop-yarn-ui/app/config.js | 27 ++++
.../hadoop-yarn/hadoop-yarn-ui/app/constants.js | 24 +++
.../app/controllers/application.js | 55 +++++++
.../hadoop-yarn-ui/app/helpers/divide.js | 31 ++++
.../app/helpers/log-files-comma.js | 48 ++++++
.../hadoop-yarn-ui/app/helpers/node-link.js | 37 +++++
.../hadoop-yarn-ui/app/helpers/node-menu.js | 66 ++++++++
.../hadoop-yarn-ui/app/models/yarn-app.js | 14 +-
.../app/models/yarn-container-log.js | 25 +++
.../hadoop-yarn-ui/app/models/yarn-node-app.js | 44 ++++++
.../app/models/yarn-node-container.js | 57 +++++++
.../hadoop-yarn-ui/app/models/yarn-node.js | 33 ++++
.../hadoop-yarn-ui/app/models/yarn-rm-node.js | 92 +++++++++++
.../hadoop-yarn/hadoop-yarn-ui/app/router.js | 13 ++
.../hadoop-yarn-ui/app/routes/application.js | 38 +++++
.../hadoop-yarn-ui/app/routes/index.js | 29 ++++
.../hadoop-yarn-ui/app/routes/yarn-apps.js | 4 +-
.../app/routes/yarn-container-log.js | 55 +++++++
.../hadoop-yarn-ui/app/routes/yarn-node-app.js | 29 ++++
.../hadoop-yarn-ui/app/routes/yarn-node-apps.js | 29 ++++
.../app/routes/yarn-node-container.js | 30 ++++
.../app/routes/yarn-node-containers.js | 28 ++++
.../hadoop-yarn-ui/app/routes/yarn-node.js | 29 ++++
.../hadoop-yarn-ui/app/routes/yarn-nodes.js | 25 +++
.../app/serializers/yarn-container-log.js | 39 +++++
.../app/serializers/yarn-node-app.js | 86 +++++++++++
.../app/serializers/yarn-node-container.js | 74 +++++++++
.../hadoop-yarn-ui/app/serializers/yarn-node.js | 56 +++++++
.../app/serializers/yarn-rm-node.js | 77 ++++++++++
.../app/templates/application.hbs | 4 +-
.../hadoop-yarn-ui/app/templates/error.hbs | 19 +++
.../hadoop-yarn-ui/app/templates/notfound.hbs | 20 +++
.../hadoop-yarn-ui/app/templates/yarn-apps.hbs | 4 +-
.../app/templates/yarn-container-log.hbs | 36 +++++
.../app/templates/yarn-node-app.hbs | 60 ++++++++
.../app/templates/yarn-node-apps.hbs | 51 +++++++
.../app/templates/yarn-node-container.hbs | 70 +++++++++
.../app/templates/yarn-node-containers.hbs | 58 +++++++
.../hadoop-yarn-ui/app/templates/yarn-node.hbs | 94 ++++++++++++
.../hadoop-yarn-ui/app/templates/yarn-nodes.hbs | 65 ++++++++
.../hadoop-yarn-ui/app/utils/converter.js | 21 ++-
.../hadoop-yarn-ui/app/utils/sorter.js | 42 ++++-
.../hadoop-yarn/hadoop-yarn-ui/bower.json | 2 +-
.../hadoop-yarn-ui/config/environment.js | 1 -
.../unit/adapters/yarn-container-log-test.js | 73 +++++++++
.../tests/unit/adapters/yarn-node-app-test.js | 93 +++++++++++
.../unit/adapters/yarn-node-container-test.js | 93 +++++++++++
.../tests/unit/adapters/yarn-node-test.js | 42 +++++
.../tests/unit/adapters/yarn-rm-node-test.js | 44 ++++++
.../unit/models/yarn-container-log-test.js | 48 ++++++
.../tests/unit/models/yarn-node-app-test.js | 65 ++++++++
.../unit/models/yarn-node-container-test.js | 78 ++++++++++
.../tests/unit/models/yarn-node-test.js | 58 +++++++
.../tests/unit/models/yarn-rm-node-test.js | 95 ++++++++++++
.../unit/routes/yarn-container-log-test.js | 120 +++++++++++++++
.../tests/unit/routes/yarn-node-app-test.js | 56 +++++++
.../tests/unit/routes/yarn-node-apps-test.js | 60 ++++++++
.../unit/routes/yarn-node-container-test.js | 61 ++++++++
.../unit/routes/yarn-node-containers-test.js | 68 +++++++++
.../tests/unit/routes/yarn-node-test.js | 84 ++++++++++
.../tests/unit/routes/yarn-nodes-test.js | 74 +++++++++
.../unit/serializers/yarn-container-log-test.js | 49 ++++++
.../unit/serializers/yarn-node-app-test.js | 102 +++++++++++++
.../serializers/yarn-node-container-test.js | 128 ++++++++++++++++
.../tests/unit/serializers/yarn-node-test.js | 69 +++++++++
.../tests/unit/serializers/yarn-rm-node-test.js | 153 +++++++++++++++++++
.../tests/unit/utils/converter-test.js | 48 +++++-
.../tests/unit/utils/sorter-test.js | 26 ++++
80 files changed, 3840 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
index ef65792..5a0d2d3 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
@@ -1,10 +1,11 @@
import DS from 'ember-data';
+import Config from 'yarn-ui/config';
export default DS.JSONAPIAdapter.extend({
headers: {
Accept: 'application/json'
},
- host: 'http://localhost:1337/localhost:8088', // configurable
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
namespace: 'ws/v1/cluster', // common const
pathForType(modelName) {
return ''; // move to some common place, return path by modelname.
@@ -16,4 +17,4 @@ export default DS.JSONAPIAdapter.extend({
hash.targetServer = "RM";
return this._super(url, method, hash);
}
-});
\ No newline at end of file
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
index d0f084c..d392c9b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
@@ -1,10 +1,11 @@
import DS from 'ember-data';
+import Config from 'yarn-ui/config';
export default DS.JSONAPIAdapter.extend({
headers: {
Accept: 'application/json'
},
- host: 'http://localhost:1337/localhost:8088', // configurable
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
namespace: 'ws/v1/cluster/metrics', // common const
pathForType(modelName) {
return ''; // move to some common place, return path by modelname.
@@ -16,4 +17,4 @@ export default DS.JSONAPIAdapter.extend({
hash.targetServer = "RM";
return this._super(url, method, hash);
}
-});
\ No newline at end of file
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
index 3c95d64..4e40744 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
@@ -1,11 +1,12 @@
import DS from 'ember-data';
import Converter from 'yarn-ui/utils/converter';
+import Config from 'yarn-ui/config';
export default DS.JSONAPIAdapter.extend({
headers: {
Accept: 'application/json'
},
- host: 'http://localhost:1337/localhost:8088', // configurable
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
namespace: 'ws/v1/cluster', // common const
urlForQuery(query, modelName) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
index e1108be..faff3e7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
@@ -1,10 +1,11 @@
import DS from 'ember-data';
+import Config from 'yarn-ui/config';
export default DS.JSONAPIAdapter.extend({
headers: {
Accept: 'application/json'
},
- host: 'http://localhost:1337/localhost:8088', // configurable
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
namespace: 'ws/v1/cluster', // common const
pathForType(modelName) {
return 'apps'; // move to some common place, return path by modelname.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container-log.js
new file mode 100644
index 0000000..7838c98
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container-log.js
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Ember from 'ember';
+import Converter from 'yarn-ui/utils/converter';
+
+/**
+ * REST URL's response when fetching container logs will be
+ * in plain text format and not JSON.
+ */
+export default DS.RESTAdapter.extend({
+ headers: {
+ Accept: 'text/plain'
+ },
+ host: 'http://localhost:1337/',
+ namespace: 'ws/v1/node',
+
+ urlForFindRecord(id, modelName, snapshot) {
+ var splits = Converter.splitForContainerLogs(id);
+ var nodeHttpAddr = splits[0];
+ var containerId = splits[1];
+ var filename = splits[2];
+ this.host = this.host + nodeHttpAddr;
+ var url = this._buildURL();
+ url = url + "/containerlogs/" + containerId + "/" + filename;
+ return url;
+ },
+
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "NM";
+ return this._super(url, method, hash);
+ },
+
+ /**
+ * Override options so that result is not expected to be JSON
+ */
+ ajaxOptions: function (url, type, options) {
+ var hash = options || {};
+ hash.url = url;
+ hash.type = type;
+ // Make sure jQuery does not try to convert response to JSON.
+ hash.dataType = 'text';
+ hash.context = this;
+
+ var headers = Ember.get(this, 'headers');
+ if (headers != undefined) {
+ hash.beforeSend = function (xhr) {
+ Object.keys(headers).forEach(function (key) {
+ return xhr.setRequestHeader(key, headers[key]);
+ });
+ };
+ }
+ return hash;
+ },
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
index fe09f59..d941c38 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
@@ -1,12 +1,13 @@
import DS from 'ember-data';
import Converter from 'yarn-ui/utils/converter';
+import Config from 'yarn-ui/config';
export default DS.JSONAPIAdapter.extend({
headers: {
Accept: 'application/json'
},
- rmHost: 'http://localhost:1337/localhost:8088',
- tsHost: 'http://localhost:1337/localhost:8188',
+ rmHost: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT,
+ tsHost: 'http://localhost:1337/' + Config.TS_HOST + ':' + Config.TS_PORT,
host: function() {
return undefined
}.property(),
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-app.js
new file mode 100644
index 0000000..0c60d1f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-app.js
@@ -0,0 +1,63 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/',
+ namespace: 'ws/v1/node',
+
+ urlForQuery(query) {
+ this.host = this.host + query.nodeAddr;
+ var url = this._buildURL();
+ url = url + "/apps";
+ return url;
+ },
+
+ urlForQueryRecord: function (query) {
+ this.host = this.host + query.nodeAddr;
+ var url = this._buildURL();
+ url = url + "/apps/" + query.appId;
+ return url;
+ },
+
+ query: function (store, type, query) {
+ var url = this.urlForQuery(query);
+ // Query params not required.
+ query = null;
+ return this.ajax(url, 'GET', { data: query });
+ },
+
+ queryRecord: function (store, type, query) {
+ var url = this.urlForQueryRecord(query);
+ // Query params not required.
+ query = null;
+ return this.ajax(url, 'GET', { data: query });
+ },
+
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "NM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-container.js
new file mode 100644
index 0000000..e8bf7b7
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node-container.js
@@ -0,0 +1,64 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/',
+ namespace: 'ws/v1/node',
+
+ urlForQuery(query) {
+ this.host = this.host + query.nodeHttpAddr;
+ var url = this._buildURL();
+ url = url + "/containers";
+ return url;
+ },
+
+ urlForQueryRecord(query) {
+ this.host = this.host + query.nodeHttpAddr;
+ var url = this._buildURL();
+ url = url + "/containers/" + query.containerId;
+ return url;
+ },
+
+ query: function (store, type, query) {
+ var url = this.urlForQuery(query);
+ // Query params not required.
+ query = null;
+ return this.ajax(url, 'GET', { data: query });
+ },
+
+ queryRecord: function (store, type, query) {
+ var url = this.urlForQueryRecord(query);
+ // Query params not required.
+ query = null;
+ console.log(url);
+ return this.ajax(url, 'GET', { data: query });
+ },
+
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "NM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node.js
new file mode 100644
index 0000000..64f524a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-node.js
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/',
+ namespace: 'ws/v1/node',
+
+ urlForFindRecord(id, modelName, snapshot) {
+ this.host = this.host + id;
+ var url = this._buildURL();
+ return url;
+ },
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "NM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
index 39cf796..0f6eb65 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
@@ -1,10 +1,11 @@
import DS from 'ember-data';
+import Config from 'yarn-ui/config';
export default DS.JSONAPIAdapter.extend({
headers: {
Accept: 'application/json'
},
- host: 'http://localhost:1337/localhost:8088', // configurable
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
namespace: 'ws/v1/cluster', // common const
pathForType(modelName) {
return 'scheduler'; // move to some common place, return path by modelname.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-rm-node.js
new file mode 100644
index 0000000..c6ad6f3
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-rm-node.js
@@ -0,0 +1,45 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Config from 'yarn-ui/config';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT,
+ namespace: 'ws/v1/cluster',
+ pathForType(modelName) {
+ return 'nodes';
+ },
+
+ urlForFindRecord(id, modelName, snapshot) {
+ var url = this._buildURL();
+ url = url + "/nodes/" + id;
+ return url;
+ },
+
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
index ed8ff9b..447533e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
@@ -7,24 +7,52 @@ export default Ember.Component.extend({
var info = this.get("info") ? true : this.get("info");
var bFilter = this.get("bFilter") ? true : this.get("bFilter");
+ // Defines sorter for the columns if not default.
+ // Can also specify a custom sorter.
+ var i;
var colDefs = [];
if (this.get("colTypes")) {
var typesArr = this.get("colTypes").split(' ');
var targetsArr = this.get("colTargets").split(' ');
- for (var i = 0; i < typesArr.length; i++) {
+ for (i = 0; i < typesArr.length; i++) {
+ console.log(typesArr[i] + " " + targetsArr[i]);
colDefs.push({
type: typesArr[i],
targets: parseInt(targetsArr[i])
});
}
}
-
- $('#' + this.get('table-id')).DataTable({
+ // Defines initial column and sort order.
+ var orderArr = [];
+ if (this.get("colsOrder")) {
+ var cols = this.get("colsOrder").split(' ');
+ for (i = 0; i < cols.length; i++) {
+ var col = cols[i].split(',');
+ if (col.length != 2) {
+ continue;
+ }
+ var order = col[1].trim();
+ if (order != 'asc' && order != 'desc') {
+ continue;
+ }
+ var colOrder = [];
+ colOrder.push(parseInt(col[0]));
+ colOrder.push(order);
+ orderArr.push(colOrder);
+ }
+ }
+ if (orderArr.length == 0) {
+ var defaultOrder = [0, 'asc'];
+ orderArr.push(defaultOrder);
+ }
+ console.log(orderArr[0]);
+ Ember.$('#' + this.get('table-id')).DataTable({
"paging": paging,
"ordering": ordering,
"info": info,
"bFilter": bFilter,
- columnDefs: colDefs
+ "order": orderArr,
+ "columnDefs": colDefs
});
}
-});
\ No newline at end of file
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/config.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/config.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/config.js
new file mode 100644
index 0000000..224c65a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/config.js
@@ -0,0 +1,27 @@
+/**
+ * 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.
+ */
+
+/**
+ * Host and port configurations
+ */
+export default {
+ RM_HOST: 'localhost',
+ RM_PORT: '8088',
+ TS_HOST: 'localhost',
+ TS_PORT: '8188',
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/constants.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/constants.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/constants.js
new file mode 100644
index 0000000..d2937a0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/constants.js
@@ -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.
+ */
+
+/**
+ * Application level global constants go here.
+ */
+export default {
+ PARAM_SEPARATOR: '!',
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/application.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/application.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/application.js
new file mode 100644
index 0000000..3c68365
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/application.js
@@ -0,0 +1,55 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+/**
+ * Base controller for application.
+ */
+export default Ember.Controller.extend({
+ /**
+ * Output main top UI menu which is common across all pages.
+ * Menu item will be made active based on current path.
+ */
+ outputMainMenu: function(){
+ var path = this.get('currentPath');
+ var html = '<li';
+ if (path == 'yarnQueue') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnQueue/root">Queues<span class="sr-only">' +
+ '(current)</span></a></li><li';
+ if (path.lastIndexOf('yarnApp', 0) == 0) {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnApps">Applications<span class="sr-only">' +
+ '(current)</span></a></li><li';
+ if (path == 'clusterOverview') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="clusterOverview">Cluster Overview<span class=' +
+ '"sr-only">(current)</span></a></li><li';
+ if (path.lastIndexOf('yarnNode', 0) == 0) {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnNodes">Nodes<span class="sr-only">' +
+ '(current)</span></a></li>';
+ return Ember.String.htmlSafe(html);
+ }.property('currentPath')
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/divide.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/divide.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/divide.js
new file mode 100644
index 0000000..fcf64dd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/divide.js
@@ -0,0 +1,31 @@
+/**
+ * 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.
+ */
+import Ember from 'ember';
+
+/**
+ * Helper assumes values are numeric. num means numerator and
+ * den means denominator.
+ */
+export default Ember.Helper.helper(function(params,hash) {
+ var num = hash.num;
+ var den = hash.den;
+ if (den == 0) {
+ return 0;
+ }
+ return Math.floor(num/den);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/log-files-comma.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/log-files-comma.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/log-files-comma.js
new file mode 100644
index 0000000..8c29b34
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/log-files-comma.js
@@ -0,0 +1,48 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+/**
+ * Represent log files as comma separated list.
+ */
+export default Ember.Helper.helper(function(params,hash) {
+ var logFiles = hash.logFiles;
+ if (logFiles == null) {
+ return "";
+ }
+ var logFilesLen = logFiles.length;
+ if (logFilesLen == 0) {
+ return "";
+ }
+ var nodeId = hash.nodeId;
+ var nodeAddr = hash.nodeAddr;
+ var containerId = hash.containerId;
+ var html = '<td>';
+ var logFilesCommaSeparated = "";
+ for (var i = 0; i < logFilesLen; i++) {
+ html = html + '<a href="yarnContainerLog/' + nodeId + '/' +
+ nodeAddr + '/' + containerId + '/' + logFiles[i] + '">' + logFiles[i] +
+ '</a>';
+ if (i != logFilesLen - 1) {
+ html = html + ",";
+ }
+ }
+ html = html + '</td>';
+ return Ember.String.htmlSafe(html);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-link.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-link.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-link.js
new file mode 100644
index 0000000..99d975b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-link.js
@@ -0,0 +1,37 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+/**
+ * Generate link to node page if its not SHUTDOWN or LOST.
+ */
+export default Ember.Helper.helper(function(params,hash) {
+ var nodeState = hash.nodeState;
+ var nodeHTTPAddress = hash.nodeHTTPAddress;
+ var nodeId = hash.nodeId;
+ var html = '<td>';
+ if (nodeState == "SHUTDOWN" || nodeState == "LOST") {
+ html = html + nodeHTTPAddress;
+ } else {
+ html = html + '<a href="yarnNode/' + nodeId + "/" + nodeHTTPAddress + '">' +
+ nodeHTTPAddress + '</a>';
+ }
+ html = html + '</td>';
+ return Ember.String.htmlSafe(html);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-menu.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-menu.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-menu.js
new file mode 100644
index 0000000..589111f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/node-menu.js
@@ -0,0 +1,66 @@
+/**
+ * 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.
+ */
+import Ember from 'ember';
+
+/**
+ * Create left hand side node manager menu with menu item activated based
+ * on page being accessed.
+ */
+export default Ember.Helper.helper(function(params,hash) {
+ // Place a menu within a panel inside col-md-2 container.
+ var nodeIdSplitAtPort = hash.nodeId;
+ var portIndex = nodeIdSplitAtPort.indexOf(':');
+ if (portIndex != -1) {
+ nodeIdSplitAtPort = nodeIdSplitAtPort.substring(0, portIndex) +
+ ':​' + nodeIdSplitAtPort.substring(portIndex + 1);
+ }
+ var normalizedNodeId = '';
+ var splitsAlongDots = nodeIdSplitAtPort.split('.');
+ if (splitsAlongDots) {
+ var len = splitsAlongDots.length;
+ for (var i = 0; i < len; i++) {
+ normalizedNodeId = normalizedNodeId + splitsAlongDots[i];
+ if (i != len - 1) {
+ normalizedNodeId = normalizedNodeId + '.​';
+ }
+ }
+ } else {
+ normalizedNodeId = nodeIdSplitAtPort;
+ }
+
+ var html = '<div class="col-md-2 container-fluid"><div class="panel panel-default">'+
+ '<div class="panel-heading"><h4>Node Manager<br>(' + normalizedNodeId + ')</h4></div>'+
+ '<div class="panel-body"><ul class="nav nav-pills nav-stacked" id="stacked-menu">' +
+ '<ul class="nav nav-pills nav-stacked collapse in"><li';
+ if (hash.path == 'yarnNode') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnNode/' + hash.nodeId + '/' + hash.nodeAddr +
+ '">Node Information</a></li><li';
+ if (hash.path == 'yarnNodeApps') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnNodeApps/' + hash.nodeId + '/' + hash.nodeAddr +
+ '">List of Applications</a></li><li';
+ if (hash.path == 'yarnNodeContainers') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnNodeContainers/' +hash.nodeId + '/' + hash.nodeAddr +
+ '">List of Containers</a></li></ul></ul></div>';
+ return Ember.String.htmlSafe(html);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
index cb79be1..fec2bd3 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
@@ -2,12 +2,12 @@ import Converter from 'yarn-ui/utils/converter';
import DS from 'ember-data';
export default DS.Model.extend({
- appName: DS.attr('string'),
- user: DS.attr('string'),
- queue: DS.attr('string'),
- state: DS.attr('string'),
- startTime: DS.attr('string'),
- elapsedTime: DS.attr('string'),
+ appName: DS.attr('string'),
+ user: DS.attr('string'),
+ queue: DS.attr('string'),
+ state: DS.attr('string'),
+ startTime: DS.attr('string'),
+ elapsedTime: DS.attr('string'),
finalStatus: DS.attr('string'),
finishedTime: DS.attr('finishedTime'),
progress: DS.attr('number'),
@@ -62,4 +62,4 @@ export default DS.Model.extend({
return "label label-" + style;
}.property("finalStatus")
-});
\ No newline at end of file
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container-log.js
new file mode 100644
index 0000000..31cf61e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container-log.js
@@ -0,0 +1,25 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ logs: DS.attr('string'),
+ containerID: DS.attr('string'),
+ logFileName: DS.attr('string')
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-app.js
new file mode 100644
index 0000000..6dc69ae
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-app.js
@@ -0,0 +1,44 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ appId: DS.attr('string'),
+ state: DS.attr('string'),
+ user: DS.attr('string'),
+ containers: DS.attr('array'),
+ /**
+ * Indicates no rows were retrieved from backend
+ */
+ isDummyApp: function() {
+ return this.get('id') == "dummy";
+ }.property("id"),
+
+ appStateStyle: function() {
+ var style = "default";
+ var appState = this.get("state");
+ if (appState == "RUNNING" || appState == "FINISHING_CONTAINERS_WAIT" ||
+ appState == "APPLICATION_RESOURCES_CLEANINGUP") {
+ style = "primary";
+ } else if (appState == "FINISHED") {
+ style = "success";
+ }
+ return "label label-" + style;
+ }.property("state")
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-container.js
new file mode 100644
index 0000000..3ba3216
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node-container.js
@@ -0,0 +1,57 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ containerId: DS.attr('string'),
+ state: DS.attr('string'),
+ user: DS.attr('string'),
+ exitCode: DS.attr('string'),
+ diagnostics: DS.attr('string'),
+ totalMemoryNeeded: DS.attr('number'),
+ totalVCoresNeeded: DS.attr('number'),
+ containerLogFiles: DS.attr('array'),
+
+ /**
+ * Indicates that there was no container retrieved from backend.
+ */
+ isDummyContainer: function() {
+ return this.get('id') == "dummy";
+ }.property("id"),
+
+ containerStateStyle: function() {
+ var style = "primary";
+ var containerState = this.get('state');
+ var containerExitCode = this.get('exitCode');
+ if (containerState == "DONE") {
+ if (containerExitCode == "0") {
+ style = "success";
+ } else if (containerExitCode != "N/A") {
+ style = "danger";
+ }
+ }
+ if (containerState == "EXITED_WITH_SUCCESS") {
+ style = "success";
+ }
+ if (containerState == "EXITED_WITH_FAILURE") {
+ style = "danger";
+ }
+ return "label label-" + style;
+ }.property("state", "exitCode")
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node.js
new file mode 100644
index 0000000..4753983
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-node.js
@@ -0,0 +1,33 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ totalVmemAllocatedContainersMB: DS.attr('number'),
+ totalPmemAllocatedContainersMB: DS.attr('number'),
+ totalVCoresAllocatedContainers: DS.attr('number'),
+ vmemCheckEnabled: DS.attr('boolean'),
+ pmemCheckEnabled: DS.attr('boolean'),
+ nodeHealthy: DS.attr('boolean'),
+ lastNodeUpdateTime: DS.attr('string'),
+ healthReport: DS.attr('string'),
+ nmStartupTime: DS.attr('string'),
+ nodeManagerBuildVersion: DS.attr('string'),
+ hadoopBuildVersion: DS.attr('string'),
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-rm-node.js
new file mode 100644
index 0000000..9a1082c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-rm-node.js
@@ -0,0 +1,92 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ rack: DS.attr('string'),
+ state: DS.attr('string'),
+ nodeHostName: DS.attr('string'),
+ nodeHTTPAddress: DS.attr('string'),
+ lastHealthUpdate: DS.attr('string'),
+ healthReport: DS.attr('string'),
+ numContainers: DS.attr('number'),
+ usedMemoryMB: DS.attr('number'),
+ availMemoryMB: DS.attr('number'),
+ usedVirtualCores: DS.attr('number'),
+ availableVirtualCores: DS.attr('number'),
+ version: DS.attr('string'),
+ nodeLabels: DS.attr('array'),
+
+ nodeLabelsAsString: function() {
+ var labels = this.get("nodeLabels");
+ var labelToReturn = "";
+ // Only one label per node supported.
+ if (labels && labels.length > 0) {
+ labelToReturn = labels[0];
+ }
+ return labelToReturn;
+ }.property("nodeLabels"),
+
+ /**
+ * Indicates no rows were retrieved from backend
+ */
+ isDummyNode: function() {
+ return this.get('id') == "dummy";
+ }.property("id"),
+
+ nodeStateStyle: function() {
+ var style = "default";
+ var nodeState = this.get("state");
+ if (nodeState == "REBOOTED") {
+ style = "warning";
+ } else if (nodeState == "UNHEALTHY" || nodeState == "DECOMMISSIONED" ||
+ nodeState == "LOST" || nodeState == "SHUTDOWN") {
+ style = "danger";
+ } else if (nodeState == "RUNNING") {
+ style = "success";
+ }
+ return "label label-" + style;
+ }.property("state"),
+
+ getMemoryDataForDonutChart: function() {
+ var arr = [];
+ arr.push({
+ label: "Used",
+ value: this.get("usedMemoryMB")
+ });
+ arr.push({
+ label: "Available",
+ value: this.get("availMemoryMB")
+ });
+ return arr;
+ }.property("availMemoryMB", "usedMemoryMB"),
+
+ getVCoreDataForDonutChart: function() {
+ var arr = [];
+ arr.push({
+ label: "Used",
+ value: this.get("usedVirtualCores")
+ });
+ arr.push({
+ label: "Available",
+ value: this.get("availableVirtualCores")
+ });
+ return arr;
+ }.property("availableVirtualCores", "usedVirtualCores"),
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
index c31190f..5db083e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
@@ -7,10 +7,23 @@ var Router = Ember.Router.extend({
Router.map(function() {
this.route('yarnApps');
+ this.route('yarnNodes');
+ this.route('yarnNode', { path: '/yarnNode/:node_id/:node_addr' });
+ this.route('yarnNodeApps', { path: '/yarnNodeApps/:node_id/:node_addr' });
+ this.route('yarnNodeApp',
+ { path: '/yarnNodeApp/:node_id/:node_addr/:app_id' });
+ this.route('yarnNodeContainers',
+ { path: '/yarnNodeContainers/:node_id/:node_addr' });
+ this.route('yarnNodeContainer',
+ { path: '/yarnNodeContainer/:node_id/:node_addr/:container_id' });
+ this.route('yarnContainerLog', { path:
+ '/yarnContainerLog/:node_id/:node_addr/:container_id/:filename' });
this.route('yarnQueue', { path: '/yarnQueue/:queue_name' });
this.route('clusterOverview');
this.route('yarnApp', { path: '/yarnApp/:app_id' });
this.route('yarnAppAttempt', { path: '/yarnAppAttempt/:app_attempt_id'});
+ this.route('error');
+ this.route('notfound', { path: '*:' });
});
export default Router;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/application.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/application.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/application.js
new file mode 100644
index 0000000..b7a5754
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/application.js
@@ -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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ actions: {
+ /**
+ * Base error handler for the application.
+ * If specific routes do not handle the error, it will bubble up to
+ * this handler. Here we redirect to either 404 page or a generic
+ * error handler page.
+ */
+ error: function (error) {
+ if (error && error.errors[0] &&
+ error.errors[0].status == 404) {
+ this.intermediateTransitionTo('/notfound');
+ } else {
+ this.intermediateTransitionTo('/error');
+ }
+ }
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/index.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/index.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/index.js
new file mode 100644
index 0000000..b228ff4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/index.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ /**
+ * Redirect root URL to cluster overview page.
+ */
+ beforeModel: function() {
+ this.replaceWith('clusterOverview');
+ }
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
index 79d184f..2787f5b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
@@ -2,7 +2,7 @@ import Ember from 'ember';
export default Ember.Route.extend({
model() {
- var apps = this.store.findAll('yarnApp');
- return apps
+ var apps = this.store.findAll('yarnApp');
+ return apps;
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-container-log.js
new file mode 100644
index 0000000..c324025
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-container-log.js
@@ -0,0 +1,55 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import Constants from 'yarn-ui/constants';
+
+export default Ember.Route.extend({
+ model(param) {
+ var id = param.node_addr + Constants.PARAM_SEPARATOR + param.container_id +
+ Constants.PARAM_SEPARATOR + param.filename;
+ return Ember.RSVP.hash({
+ containerLog: this.store.findRecord('yarnContainerLog', id),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ }).then(function(hash) {
+ // Just return as its success.
+ return hash;
+ }, function(reason) {
+ if (reason.errors && reason.errors[0]) {
+ // This means HTTP error response was sent by adapter.
+ return reason;
+ } else {
+ // Assume empty response received from server.
+ return { nodeInfo: { id: param.node_id, addr: param.node_addr },
+ containerLog: { logs: "", containerID: param.container_id,
+ logFileName: param.filename}};
+ }
+ });
+ },
+
+ afterModel(model) {
+ // Handle errors and redirect if promise is rejected.
+ if (model.errors && model.errors[0]) {
+ if (model.errors[0].status == 404) {
+ this.replaceWith('/notfound');
+ } else {
+ this.replaceWith('/error');
+ }
+ }
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-app.js
new file mode 100644
index 0000000..63b1f2a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-app.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ nodeApp: this.store.queryRecord('yarnNodeApp',
+ { nodeAddr : param.node_addr, appId: param.app_id }),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-apps.js
new file mode 100644
index 0000000..ffb5b7b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-apps.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ // Get all apps running on a specific node. Node is contacted by using node_addr.
+ return Ember.RSVP.hash({
+ apps: this.store.query('yarnNodeApp', { nodeAddr: param.node_addr }),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-container.js
new file mode 100644
index 0000000..2022662
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-container.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ // Get a specific container running on a specific node.
+ return Ember.RSVP.hash({
+ nodeContainer: this.store.queryRecord('yarnNodeContainer',
+ { nodeHttpAddr: param.node_addr, containerId: param.container_id }),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-containers.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-containers.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-containers.js
new file mode 100644
index 0000000..9a69729
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node-containers.js
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ */
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ // Get all containers running on specific node.
+ return Ember.RSVP.hash({
+ containers: this.store.query('yarnNodeContainer', { nodeHttpAddr: param.node_addr }),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node.js
new file mode 100644
index 0000000..7c58b94
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-node.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ // Fetches data from both NM and RM. RM is queried to get node usage info.
+ return Ember.RSVP.hash({
+ node: this.store.findRecord('yarnNode', param.node_addr),
+ rmNode: this.store.findRecord('yarnRmNode', param.node_id)
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-nodes.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-nodes.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-nodes.js
new file mode 100644
index 0000000..f33eef8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-nodes.js
@@ -0,0 +1,25 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model() {
+ return this.store.findAll('yarnRmNode');
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container-log.js
new file mode 100644
index 0000000..9e10615
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container-log.js
@@ -0,0 +1,39 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // Convert plain text response into JSON.
+ // ID is of the form nodeAddress!containerId!fileName
+ var splits = Converter.splitForContainerLogs(id);
+ var convertedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ logs: payload,
+ containerID: splits[1],
+ logFileName: splits[2]
+ }
+ };
+ return { data: convertedPayload };
+ },
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-app.js
new file mode 100644
index 0000000..8b1f152
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-app.js
@@ -0,0 +1,86 @@
+/**
+ * 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.
+ */
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Ember from 'ember';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload) {
+ if (payload.app) {
+ payload = payload.app;
+ }
+
+ var fixedPayload = {
+ id: payload.id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ appId: payload.id,
+ state: payload.state,
+ user: payload.user,
+ containers: payload.containerids
+ }
+ };
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // payload is of the form {"app":{}}
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // expected return response is of the form { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+ // payload is of the form { "apps" : { "app": [ {},{},{} ] } }
+ if (payload.apps) {
+ normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleApp);
+ }, this);
+ } else {
+ // No container reported inside containers.
+ // Response of the form { "apps": null }
+ normalizedArrayResponse.data = Ember.makeArray({
+ id: "dummy",
+ type: primaryModelClass.modelName,
+ attributes: {}});
+ }
+ return normalizedArrayResponse;
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-container.js
new file mode 100644
index 0000000..528f2fe
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-container.js
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Ember from 'ember';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload) {
+ if (payload.container) {
+ payload = payload.container;
+ }
+ var fixedPayload = {
+ id: payload.id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ containerId: payload.id,
+ state: payload.state,
+ user: payload.user,
+ diagnostics: payload.diagnostics,
+ exitCode: payload.exitCode,
+ totalMemoryNeeded: payload.totalMemoryNeededMB,
+ totalVCoresNeeded: payload.totalVCoresNeeded,
+ containerLogFiles: payload.containerLogFiles
+ }
+ };
+
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // payload is of the form {"container":{}}
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // expected return response is of the form { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+ if (payload.containers) {
+ // payload is of the form { "containers" : { "container": [ {},{},{} ] } }
+ normalizedArrayResponse.data =
+ payload.containers.container.map(singleContainer => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleContainer);
+ }, this);
+ } else {
+ // No container reported inside containers.
+ // Response of the form { "containers": null }
+ normalizedArrayResponse.data = Ember.makeArray({
+ id: "dummy",
+ type: primaryModelClass.modelName,
+ attributes: {}});
+ }
+ return normalizedArrayResponse;
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node.js
new file mode 100644
index 0000000..19308e2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node.js
@@ -0,0 +1,56 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ if (payload.nodeInfo) {
+ payload = payload.nodeInfo;
+ }
+
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ totalVmemAllocatedContainersMB: payload.totalVmemAllocatedContainersMB,
+ totalPmemAllocatedContainersMB: payload.totalPmemAllocatedContainersMB,
+ totalVCoresAllocatedContainers: payload.totalVCoresAllocatedContainers,
+ vmemCheckEnabled: payload.vmemCheckEnabled,
+ pmemCheckEnabled: payload.pmemCheckEnabled,
+ nodeHealthy: payload.nodeHealthy,
+ lastNodeUpdateTime: Converter.timeStampToDate(payload.lastNodeUpdateTime),
+ healthReport: payload.healthReport,
+ nmStartupTime: Converter.timeStampToDate(payload.nmStartupTime),
+ nodeManagerBuildVersion: payload.nodeManagerBuildVersion,
+ hadoopBuildVersion: payload.hadoopBuildVersion
+ }
+ };
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // payload is of the form {"nodeInfo":{}}
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id, requestType);
+ return { data: p };
+ },
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-rm-node.js
new file mode 100644
index 0000000..6cb9320
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-rm-node.js
@@ -0,0 +1,77 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id) {
+ if (payload.node) {
+ payload = payload.node;
+ }
+
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ rack: payload.rack,
+ state: payload.state,
+ nodeHostName: payload.nodeHostName,
+ nodeHTTPAddress: payload.nodeHTTPAddress,
+ lastHealthUpdate: Converter.timeStampToDate(payload.lastHealthUpdate),
+ healthReport: payload.healthReport,
+ numContainers: payload.numContainers,
+ usedMemoryMB: payload.usedMemoryMB,
+ availMemoryMB: payload.availMemoryMB,
+ usedVirtualCores: payload.usedVirtualCores,
+ availableVirtualCores: payload.availableVirtualCores,
+ version: payload.version,
+ nodeLabels: payload.nodeLabels
+ }
+ };
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // payload is of the form {"nodeInfo":{}}
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // expected response is of the form { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+ if (payload.nodes) {
+ // payload is of the form { "nodes": { "node": [ {},{},{} ] } }
+ normalizedArrayResponse.data = payload.nodes.node.map(singleNode => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleNode, singleNode.id);
+ }, this);
+ } else {
+ normalizedArrayResponse.data = Ember.makeArray({
+ id: "dummy",
+ type: primaryModelClass.modelName,
+ attributes: {}});
+ }
+ return normalizedArrayResponse;
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfd86e68/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
index 252ca74..a9de203 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
@@ -14,9 +14,7 @@
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
- <li class="active"><a href="yarnQueue/root">Queues<span class="sr-only">(current)</span></a></li>
- <li class="active"><a href="yarnApps">Applications<span class="sr-only">(current)</span></a></li>
- <li class="active"><a href="clusterOverview">Cluster Overview<span class="sr-only">(current)</span></a></li>
+ {{outputMainMenu}}
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[42/50] [abbrv] hadoop git commit: YARN-5490. [YARN-3368] Fix various
alignment issues and broken breadcrumb link in Node page. (Akhil P B Tan via
Sunil G)
Posted by su...@apache.org.
YARN-5490. [YARN-3368] Fix various alignment issues and broken breadcrumb link in Node page. (Akhil P B Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/be715016
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/be715016
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/be715016
Branch: refs/heads/YARN-3368
Commit: be715016fedd332a5ad712cac23e43f0ba0d1215
Parents: abe3db9
Author: sunilg <su...@apache.org>
Authored: Thu Oct 27 21:04:56 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../src/main/webapp/app/controllers/yarn-node-apps.js | 2 +-
.../src/main/webapp/app/controllers/yarn-node-containers.js | 2 +-
.../hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js | 2 +-
.../src/main/webapp/app/controllers/yarn-nodes-heatmap.js | 2 +-
.../hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js | 2 +-
.../hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs | 4 ++--
.../hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs | 2 +-
7 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/be715016/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-apps.js
index 4bfe9d0..6e67ab0 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-apps.js
@@ -27,7 +27,7 @@ export default Ember.Controller.extend({
routeName: 'application'
},{
text: "Nodes",
- routeName: 'yarn-nodes'
+ routeName: 'yarn-nodes.table'
}, {
text: `Node [ ${nodeInfo.id} ]`,
href: `/#/yarn-node/${nodeInfo.id}/${nodeInfo.addr}`,
http://git-wip-us.apache.org/repos/asf/hadoop/blob/be715016/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-containers.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-containers.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-containers.js
index 59c8591..abe4098 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-containers.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-containers.js
@@ -27,7 +27,7 @@ export default Ember.Controller.extend({
routeName: 'application'
},{
text: "Nodes",
- routeName: 'yarn-nodes'
+ routeName: 'yarn-nodes.table'
}, {
text: `Node [ ${nodeInfo.id} ]`,
href: `/#/yarn-node/${nodeInfo.id}/${nodeInfo.addr}`,
http://git-wip-us.apache.org/repos/asf/hadoop/blob/be715016/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js
index e505022..0661415 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js
@@ -27,7 +27,7 @@ export default Ember.Controller.extend({
routeName: 'application'
},{
text: "Nodes",
- routeName: 'yarn-nodes'
+ routeName: 'yarn-nodes.table'
}, {
text: `Node [ ${nodeInfo.id} ]`,
href: `/#/yarn-node/${nodeInfo.id}/${nodeInfo.addr}`,
http://git-wip-us.apache.org/repos/asf/hadoop/blob/be715016/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes-heatmap.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes-heatmap.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes-heatmap.js
index fbe77fa..a38d8c5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes-heatmap.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes-heatmap.js
@@ -27,7 +27,7 @@ export default Ember.Controller.extend({
routeName: 'application'
}, {
text: "Nodes",
- routeName: 'yarn-nodes',
+ routeName: 'yarn-nodes.table',
}, {
text: "Heatmap",
routeName: 'yarn-nodes-heatmap',
http://git-wip-us.apache.org/repos/asf/hadoop/blob/be715016/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js
index b4bf0f0..24f9550 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js
@@ -27,7 +27,7 @@ export default Ember.Controller.extend({
routeName: 'application'
}, {
text: "Nodes",
- routeName: 'yarn-nodes',
+ routeName: 'yarn-nodes.table',
}]
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/be715016/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
index 2d6b3a3..b7f727a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
@@ -82,7 +82,7 @@
</div>
<div class="row">
- <div class="col-lg-4 container-fluid">
+ <div class="col-lg-5 container-fluid">
<div class="panel panel-default">
<div class="panel-heading">
Resource - Memory (in MB)
@@ -97,7 +97,7 @@
</div>
</div>
- <div class="col-lg-4 container-fluid">
+ <div class="col-lg-5 container-fluid">
<div class="panel panel-default">
<div class="panel-heading">
Resource - VCores
http://git-wip-us.apache.org/repos/asf/hadoop/blob/be715016/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
index ed5522e..874b3c4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
@@ -47,7 +47,7 @@
<div class="col-md-10 container-fluid">
{{#if model.clusterMetrics}}
<div class="row">
- <div class="col-lg-4 container-fluid">
+ <div class="col-lg-5 container-fluid">
<div class="panel panel-default">
<div class="panel-heading">
Node Managers
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[24/50] [abbrv] hadoop git commit: YARN-4733. [YARN-3368] Initial
commit of new YARN web UI. (wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-metric.js
new file mode 100644
index 0000000..d39885e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-metric.js
@@ -0,0 +1,29 @@
+import DS from 'ember-data';
+
+export default DS.JSONAPISerializer.extend({
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: payload
+ };
+
+ return this._super(store, primaryModelClass, fixedPayload, id,
+ requestType);
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = [
+ this.normalizeSingleResponse(store, primaryModelClass,
+ payload.clusterMetrics, 1, requestType)
+ ];
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app-attempt.js
new file mode 100644
index 0000000..c5394d0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app-attempt.js
@@ -0,0 +1,49 @@
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+
+ if (payload.appAttempt) {
+ payload = payload.appAttempt;
+ }
+
+ var fixedPayload = {
+ id: payload.appAttemptId,
+ type: primaryModelClass.modelName, // yarn-app
+ attributes: {
+ startTime: Converter.timeStampToDate(payload.startTime),
+ finishedTime: Converter.timeStampToDate(payload.finishedTime),
+ containerId: payload.containerId,
+ nodeHttpAddress: payload.nodeHttpAddress,
+ nodeId: payload.nodeId,
+ state: payload.nodeId,
+ logsLink: payload.logsLink
+ }
+ };
+
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id, requestType);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.appAttempts.appAttempt.map(singleApp => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleApp, singleApp.id, requestType);
+ }, this);
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app.js
new file mode 100644
index 0000000..a038fff
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app.js
@@ -0,0 +1,66 @@
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ if (payload.app) {
+ payload = payload.app;
+ }
+
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName, // yarn-app
+ attributes: {
+ appName: payload.name,
+ user: payload.user,
+ queue: payload.queue,
+ state: payload.state,
+ startTime: Converter.timeStampToDate(payload.startedTime),
+ elapsedTime: Converter.msToElapsedTime(payload.elapsedTime),
+ finishedTime: Converter.timeStampToDate(payload.finishedTime),
+ finalStatus: payload.finalStatus,
+ progress: payload.progress,
+ diagnostics: payload.diagnostics,
+ amContainerLogs: payload.amContainerLogs,
+ amHostHttpAddress: payload.amHostHttpAddress,
+ logAggregationStatus: payload.logAggregationStatus,
+ unmanagedApplication: payload.unmanagedApplication,
+ amNodeLabelExpression: payload.amNodeLabelExpression,
+ priority: payload.priority,
+ allocatedMB: payload.allocatedMB,
+ allocatedVCores: payload.allocatedVCores,
+ runningContainers: payload.runningContainers,
+ memorySeconds: payload.memorySeconds,
+ vcoreSeconds: payload.vcoreSeconds,
+ preemptedResourceMB: payload.preemptedResourceMB,
+ preemptedResourceVCores: payload.preemptedResourceVCores,
+ numNonAMContainerPreempted: payload.numNonAMContainerPreempted,
+ numAMContainerPreempted: payload.numAMContainerPreempted
+ }
+ };
+
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id, requestType);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleApp, singleApp.id, requestType);
+ }, this);
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container.js
new file mode 100644
index 0000000..665b9df
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container.js
@@ -0,0 +1,54 @@
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+
+ var fixedPayload = {
+ id: payload.containerId,
+ type: primaryModelClass.modelName, // yarn-app
+ attributes: {
+ allocatedMB: payload.allocatedMB,
+ allocatedVCores: payload.allocatedVCores,
+ assignedNodeId: payload.assignedNodeId,
+ priority: payload.priority,
+ startedTime: Converter.timeStampToDate(payload.startedTime),
+ finishedTime: Converter.timeStampToDate(payload.finishedTime),
+ elapsedTime: payload.elapsedTime,
+ logUrl: payload.logUrl,
+ containerExitStatus: payload.containerExitStatus,
+ containerState: payload.containerState,
+ nodeHttpAddress: payload.nodeHttpAddress
+ }
+ };
+
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id, requestType);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ if (payload && payload.container) {
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.container.map(singleContainer => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleContainer, singleContainer.id, requestType);
+ }, this);
+ return normalizedArrayResponse;
+ }
+
+ normalizedArrayResponse.data = [];
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-queue.js
new file mode 100644
index 0000000..ce4d775
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-queue.js
@@ -0,0 +1,127 @@
+import DS from 'ember-data';
+
+export default DS.JSONAPISerializer.extend({
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var children = [];
+ if (payload.queues) {
+ payload.queues.queue.forEach(function(queue) {
+ children.push(queue.queueName);
+ });
+ }
+
+ var includedData = [];
+ var relationshipUserData = [];
+
+ // update user models
+ if (payload.users && payload.users.user) {
+ payload.users.user.forEach(function(u) {
+ includedData.push({
+ type: "YarnUser",
+ id: u.username + "_" + payload.queueName,
+ attributes: {
+ name: u.username,
+ queueName: payload.queueName,
+ usedMemoryMB: u.resourcesUsed.memory || 0,
+ usedVCore: u.resourcesUsed.vCores || 0,
+ }
+ });
+
+ relationshipUserData.push({
+ type: "YarnUser",
+ id: u.username + "_" + payload.queueName,
+ })
+ });
+ }
+
+
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName, // yarn-queue
+ attributes: {
+ name: payload.queueName,
+ parent: payload.myParent,
+ children: children,
+ capacity: payload.capacity,
+ usedCapacity: payload.usedCapacity,
+ maxCapacity: payload.maxCapacity,
+ absCapacity: payload.absoluteCapacity,
+ absMaxCapacity: payload.absoluteMaxCapacity,
+ absUsedCapacity: payload.absoluteUsedCapacity,
+ state: payload.state,
+ userLimit: payload.userLimit,
+ userLimitFactor: payload.userLimitFactor,
+ preemptionDisabled: payload.preemptionDisabled,
+ numPendingApplications: payload.numPendingApplications,
+ numActiveApplications: payload.numActiveApplications,
+ },
+ // Relationships
+ relationships: {
+ users: {
+ data: relationshipUserData
+ }
+ }
+ };
+
+ return {
+ queue: this._super(store, primaryModelClass, fixedPayload, id, requestType),
+ includedData: includedData
+ }
+ },
+
+ handleQueue(store, primaryModelClass, payload, id, requestType) {
+ var data = [];
+ var includedData = []
+ var result = this.normalizeSingleResponse(store, primaryModelClass,
+ payload, id, requestType);
+
+ data.push(result.queue);
+ includedData = includedData.concat(result.includedData);
+
+ if (payload.queues) {
+ for (var i = 0; i < payload.queues.queue.length; i++) {
+ var queue = payload.queues.queue[i];
+ queue.myParent = payload.queueName;
+ var childResult = this.handleQueue(store, primaryModelClass, queue,
+ queue.queueName,
+ requestType);
+
+ data = data.concat(childResult.data);
+ includedData = includedData.concat(childResult.includedData);
+ }
+ }
+
+ return {
+ data: data,
+ includedData, includedData
+ }
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var normalizedArrayResponse = {};
+ var result = this.handleQueue(store,
+ primaryModelClass,
+ payload.scheduler.schedulerInfo, "root", requestType);
+
+ normalizedArrayResponse.data = result.data;
+ normalizedArrayResponse.included = result.includedData;
+
+ console.log(normalizedArrayResponse);
+
+ return normalizedArrayResponse;
+
+ /*
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
+ return this.normalizeSingleResponse(store, primaryModelClass, singleApp, singleApp.id, requestType);
+ }, this);
+ return normalizedArrayResponse;
+ */
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/styles/app.css
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/styles/app.css b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/styles/app.css
new file mode 100644
index 0000000..e1ff994
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/styles/app.css
@@ -0,0 +1,141 @@
+/*
+ Over all style
+ */
+text {
+ font: 12px sans-serif;
+}
+
+text.small {
+ font: 8px sans-serif;
+}
+
+html, body
+{
+ margin: 0px;
+ padding: 0px;
+ height: 100%;
+ width: 100%;
+}
+
+/*
+ queue's style (left banner of queues)
+ */
+
+text.queue {
+ font-family : sans-serif;
+ font-size : 15px;
+ fill : gray;
+}
+
+path.queue {
+ stroke: gray;
+ fill: none;
+}
+
+circle.queue {
+ r: 10;
+ fill: Steelblue;
+}
+
+/*
+ background style
+ */
+line.grid {
+ stroke: WhiteSmoke;
+}
+
+line.chart {
+ stroke: Gray;
+}
+
+/*
+ charts styles
+ */
+text.chart-title {
+ font-size: 30px;
+ font-family: sans-serif;
+ text-anchor: middle;
+ fill: Gray;
+}
+
+text.donut-highlight-text {
+ font-size: 20px;
+ font-family: sans-serif;
+ text-anchor: middle;
+ fill: Gray;
+ vertical-align: middle;
+}
+
+rect.chart-frame {
+ fill: none;
+ stroke: gray;
+ stroke-dasharray: 10,10;
+}
+
+line.chart-leftbanner {
+ stroke-width: 2;
+ stroke: gray;
+ stroke-dasharray: 10,10;
+}
+
+text.bar-chart-text {
+ font-size: 8px;
+ font-family: sans-serif;
+ vertical-align: middle;
+ fill: Gray;;
+}
+
+div.tooltip {
+ position: absolute;
+ text-align: center;
+ /*height: 28px;*/
+ padding: 2px;
+ font: 12px sans-serif;
+ background: lightsteelblue;
+ border: 0px;
+ border-radius: 8px;
+ pointer-events: none;
+}
+
+/*
+ * Data table
+ */
+
+table.dataTable thead .sorting {
+ background-image: url("/assets/images/datatables/sort_both.png");
+}
+table.dataTable thead .sorting_asc {
+ background-image: url("/assets/images/datatables/sort_asc.png");
+}
+table.dataTable thead .sorting_desc {
+ background-image: url("/assets/images/datatables/sort_desc.png");
+}
+table.dataTable thead .sorting_asc_disabled {
+ background-image: url("/assets/images/datatables/sort_asc_disabled.png");
+}
+table.dataTable thead .sorting_desc_disabled {
+ background-image: url("/assets/images/datatables/sort_desc_disabled.png");
+}
+
+/*
+ * Queue selector
+ */
+.node {
+ cursor: pointer;
+}
+
+.node circle {
+ fill: #fff;
+ stroke: steelblue;
+ stroke-width: 3px;
+}
+
+.node text {
+ font: 12px sans-serif;
+}
+
+.link {
+ fill: none;
+ stroke: #ccc;
+ stroke-width: 2px;
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
new file mode 100644
index 0000000..252ca74
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
@@ -0,0 +1,25 @@
+<nav class="navbar navbar-default">
+ <div class="container-fluid">
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="#">Apache Hadoop YARN</a>
+ </div>
+
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav">
+ <li class="active"><a href="yarnQueue/root">Queues<span class="sr-only">(current)</span></a></li>
+ <li class="active"><a href="yarnApps">Applications<span class="sr-only">(current)</span></a></li>
+ <li class="active"><a href="clusterOverview">Cluster Overview<span class="sr-only">(current)</span></a></li>
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div><!-- /.container-fluid -->
+</nav>
+
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/cluster-overview.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/cluster-overview.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/cluster-overview.hbs
new file mode 100644
index 0000000..81c11e9
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/cluster-overview.hbs
@@ -0,0 +1,56 @@
+<div class="row">
+ <div class="col-lg-3 container-fluid" id="finishedapps-donut-chart">
+ {{donut-chart data=model.firstObject.getFinishedAppsDataForDonutChart
+ title="Finished Apps"
+ showLabels=true
+ parentId="finishedapps-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+
+ <div class="col-lg-3 container-fluid" id="runningapps-donut-chart">
+ {{donut-chart data=model.firstObject.getRunningAppsDataForDonutChart
+ title="Running Apps"
+ showLabels=true
+ parentId="runningapps-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+</div>
+
+<hr>
+
+<div class="row">
+ <div class="col-lg-3 container-fluid" id="nodes-donut-chart">
+ {{donut-chart data=model.firstObject.getNodesDataForDonutChart
+ title="Node Managers"
+ showLabels=true
+ parentId="nodes-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+</div>
+
+<hr>
+
+<div class="row">
+ <div class="col-lg-3 container-fluid" id="mem-donut-chart">
+ {{donut-chart data=model.firstObject.getMemoryDataForDonutChart
+ title="Resource - Memory"
+ showLabels=true
+ parentId="mem-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+
+ <div class="col-lg-3 container-fluid" id="vcore-donut-chart">
+ {{donut-chart data=model.firstObject.getVCoreDataForDonutChart
+ title="Resource - VCores"
+ showLabels=true
+ parentId="vcore-donut-chart"
+ ratio=0.6
+ maxHeight=350}}
+ </div>
+</div>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/.gitkeep
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-attempt-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-attempt-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-attempt-table.hbs
new file mode 100644
index 0000000..633d363
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-attempt-table.hbs
@@ -0,0 +1,28 @@
+<table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <tbody>
+ <tr>
+ <td>Application Attempt Id</td>
+ <td>{{attempt.id}}</td>
+ </tr>
+ <tr>
+ <td>Start Time</td>
+ <td>{{attempt.startTime}}</td>
+ </tr>
+ <tr>
+ <td>AM Container Id</td>
+ <td>{{attempt.containerId}}</td>
+ </tr>
+ <tr>
+ <td>AM Node Web UI</td>
+ <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
+ </tr>
+ <tr>
+ <td>AM Node Id</td>
+ <td>{{attempt.nodeId}}</td>
+ </tr>
+ <tr>
+ <td>Log</td>
+ <td><a href={{attempt.logsLink}}>link</a></td>
+ </tr>
+ </tbody>
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-table.hbs
new file mode 100644
index 0000000..92e9d05
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-table.hbs
@@ -0,0 +1,62 @@
+<table id={{table-id}} class="display table table-striped table-bordered" cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Application ID</th>
+ <th>Name</th>
+ <th>User</th>
+ <th>Queue</th>
+ <th>State</th>
+ <th>Final Status</th>
+ <th>Start Time</th>
+ <th>Elapsed Time</th> <!-- idx = 7 -->
+ <th>Finished Time</th>
+ <th>Priority</th>
+ <th>Progress</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if arr}}
+ {{#each arr as |app|}}
+ <tr>
+ <td><a href="yarnApp/{{app.id}}">{{app.id}}</a></td>
+ <td>{{app.appName}}</td>
+ <td>{{app.user}}</td>
+ <td>{{app.queue}}</td>
+ <td>{{app.state}}</td>
+ <td><span class={{app.finalStatusStyle}}>{{app.finalStatus}}</span></td>
+ <td>{{app.startTime}}</td>
+ <td>{{app.elapsedTime}}</td>
+ <td>{{app.finishedTime}}</td>
+ <td>{{app.priority}}</td>
+ <td>
+ <div class="progress" style="margin-bottom: 0;">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style={{app.progressStyle}}>
+ {{app.progress}}%
+ </div>
+ </div>
+ </td>
+ </tr>
+ {{/each}}
+ {{else}}
+ <tr>
+ <td><a href="yarnApp/{{app.id}}">{{app.id}}</a></td>
+ <td>{{app.appName}}</td>
+ <td>{{app.user}}</td>
+ <td>{{app.queue}}</td>
+ <td>{{app.state}}</td>
+ <td><span class={{app.finalStatusStyle}}>{{app.finalStatus}}</span></td>
+ <td>{{app.startTime}}</td>
+ <td>{{app.elapsedTime}}</td>
+ <td>{{app.finishedTime}}</td>
+ <td>{{app.priority}}</td>
+ <td>
+ <div class="progress" style="margin-bottom: 0;">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style={{app.progressStyle}}>
+ {{app.progress}}%
+ </div>
+ </div>
+ </td>
+ </tr>
+ {{/if}}
+ </tbody>
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/container-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/container-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/container-table.hbs
new file mode 100644
index 0000000..70d3fc4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/container-table.hbs
@@ -0,0 +1,36 @@
+<table id="container-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <tbody>
+ <tr>
+ <td>Start Time</td>
+ <td>{{container.startedTime}}</td>
+ </tr>
+ <tr>
+ <td>Finished Time</td>
+ <td>{{container.finishedTime}}</td>
+ </tr>
+ <tr>
+ <td>Elapsed Time</td>
+ <td>{{container.elapsedTime}}</td>
+ </tr>
+ <tr>
+ <td>Priority</td>
+ <td>{{container.priority}}</td>
+ </tr>
+ <tr>
+ <td>Log</td>
+ <td><a href={{container.logUrl}}>link</a></td>
+ </tr>
+ <tr>
+ <td>Exit Status</td>
+ <td>{{container.containerExitStatus}}</td>
+ </tr>
+ <tr>
+ <td>State</td>
+ <td>{{container.containerState}}</td>
+ </tr>
+ <tr>
+ <td>NodeManager UI</td>
+ <td>{{container.nodeHttpAddress}}</td>
+ </tr>
+ </tbody>
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-configuration-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-configuration-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-configuration-table.hbs
new file mode 100644
index 0000000..fb9f1a0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-configuration-table.hbs
@@ -0,0 +1,40 @@
+<table id="queue-configuration-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <thead>
+ <tr>
+ <td><b>Configurations</b></td>
+ <td>Value</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Queue Name</td>
+ <td>{{queue.id}}</td>
+ </tr>
+ <tr>
+ <td>Configured Capacity</td>
+ <td>{{queue.capacity}}</td>
+ </tr>
+ <tr>
+ <td>Configured Max Capacity</td>
+ <td>{{queue.maxCapacity}}</td>
+ </tr>
+ <tr>
+ <td>State</td>
+ <td>{{queue.state}}</td>
+ </tr>
+ {{#if queue.isLeafQueue}}
+ <tr>
+ <td>User Limit Percent</td>
+ <td>{{queue.userLimit}}</td>
+ </tr>
+ <tr>
+ <td>User Limit Factor</td>
+ <td>{{queue.userLimitFactor}}</td>
+ </tr>
+ <tr>
+ <td>Preemption Disabled</td>
+ <td>{{queue.preemptionDisabled}}</td>
+ </tr>
+ {{/if}}
+ </tbody>
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-navigator.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-navigator.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-navigator.hbs
new file mode 100644
index 0000000..4ef22902
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-navigator.hbs
@@ -0,0 +1,18 @@
+<div class="row">
+ <div class="col-lg-4">
+ <select class="js-example-basic-single" width="100%" id="queue-name-selector">
+ {{item-selector element-id="queue-name-selector" prefix="Queue : " model=model}}
+ </select>
+ </div>
+</div><!-- /.row -->
+
+<!-- queue selector -->
+<div class="row">
+ <div class="col-md-12 container-fluid" id="tree-selector-container">
+ {{tree-selector model=model parentId="tree-selector-container" selected=selected}}
+ </div>
+</div>
+
+<hr>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/timeline-view.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/timeline-view.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/timeline-view.hbs
new file mode 100644
index 0000000..657f6e8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/timeline-view.hbs
@@ -0,0 +1,35 @@
+<div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ {{#if attemptModel}}
+ Application Attempts
+ {{else}}
+ Containers
+ {{/if}}
+ </div>
+ <div class="panel-body">
+ <div class="col-md-8 container-fluid" id={{parent-id}}>
+ </div>
+
+ <!-- diag info -->
+ <div class="col-md-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ {{#if selected.link}}
+ <a href={{selected.link}}>{{selected.id}}</a>
+ {{else}}
+ {{selected.id}}
+ {{/if}}
+ </div>
+ {{#if attemptModel}}
+ {{app-attempt-table attempt=selected}}
+ {{else}}
+ {{container-table container=selected}}
+ {{/if}}
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app-attempt.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app-attempt.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app-attempt.hbs
new file mode 100644
index 0000000..afcfa4f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app-attempt.hbs
@@ -0,0 +1,12 @@
+<div class="container-fluid">
+ <div class="row">
+ {{app-attempt-table attempt=model.attempt}}
+ </div>
+
+ <!-- containers table -->
+ <div class="row">
+ {{timeline-view parent-id="containers-timeline-div" my-id="timeline-view" height="400" rmModel=model.rmContainers tsModel=model.tsContainers label="shortAppAttemptId" attemptModel=false}}
+ </div>
+</div>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app.hbs
new file mode 100644
index 0000000..0ba6749
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app.hbs
@@ -0,0 +1,145 @@
+<div class="container-fluid">
+ <!-- app table -->
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Application Basic Information
+ </div>
+ {{app-table table-id="app-table" app=model.app}}
+ </div>
+ </div>
+ </div>
+
+ <!-- diag info and other infos -->
+ <div class="row">
+ <!-- diag info -->
+ <div class="col-md-4 container-fluid">
+ {{#if model.app.isFailed}}
+ <div class="panel panel-danger">
+ <div class="panel-heading">
+ Diagnostics
+ </div>
+ <div class="panel-body">{{model.app.diagnostics}}</div>
+ </div>
+ {{else}}
+ <div class="panel panel-default">
+ <div class="panel-body">
+ Diagnostics
+ </div>
+ <div class="panel-footer">{{model.app.diagnostics}}</div>
+ </div>
+ {{/if}}
+ </div>
+
+ <div class="col-md-5 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Scheduling Info</div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>Allocated Resource</td>
+ <td>{{model.app.allocatedResource}}</td>
+ </tr>
+ <tr>
+ <td>Running Containers</td>
+ <td>{{model.app.runningContainers}}</td>
+ </tr>
+ <tr>
+ <td>Preempted Resource</td>
+ <td>{{model.app.preemptedResource}}</td>
+ </tr>
+ <tr>
+ <td>Num Non-AM container preempted</td>
+ <td>{{model.app.numAMContainerPreempted}}</td>
+ </tr>
+ <tr>
+ <td>Num AM container preempted</td>
+ <td>{{model.app.numAMContainerPreempted}}</td>
+ </tr>
+ <tr>
+ <td>Aggregated Resource Usage</td>
+ <td>{{model.app.aggregatedResourceUsage}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+
+ <!-- other info -->
+ <div class="col-md-3 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Other Info</div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>AM Container Log</td>
+ <td><a href={{model.app.amContainerLogs}}>Link</a></td>
+ </tr>
+ <tr>
+ <td>AM Host Http Addr</td>
+ <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
+ </tr>
+ <tr>
+ <td>Log Aggregation Status</td>
+ <td>{{model.app.logAggregationStatus}}</td>
+ </tr>
+ <tr>
+ <td>Is Unmanaged AM</td>
+ <td>{{model.app.unmanagedApplication}}</td>
+ </tr>
+ <tr>
+ <td>AM Node Label Expression</td>
+ <td>{{model.app.amNodeLabelExpression}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+
+<!--
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Application Attempts
+ </div>
+ <table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <thead>
+ <tr>
+ <th>Start Time</th>
+ <th>Master ContainerId</th>
+ <th>Node Http Address</th>
+ <th>Node Id</th>
+ <th>Logs Link</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each model.attempts as |attempt|}}
+ <tr>
+ <td>{{attempt.startTime}}</td>
+ <td>{{attempt.containerId}}</td>
+ <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
+ <td>{{attempt.nodeId}}</td>
+ <td><a href={{attempt.logsLink}}>link</a></td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+-->
+ <!-- timeline view of children -->
+ <div class="row">
+ {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
+ </div>
+</div>
+
+<!--
+{{simple-table table-id="app-attempt-table" paging=false bFilter=false}}
+-->
+
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
new file mode 100644
index 0000000..e58d6bd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
@@ -0,0 +1,3 @@
+{{app-table table-id="apps-table" arr=model}}
+{{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-queue.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-queue.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-queue.hbs
new file mode 100644
index 0000000..11bb6f4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-queue.hbs
@@ -0,0 +1,48 @@
+<div class="container-fluid">
+ {{queue-navigator model=model.queues selected=model.selected}}
+</div>
+
+<div class="row">
+ <div class="col-lg-3 container-fluid">
+ {{queue-configuration-table queue=model.selectedQueue}}
+ </div>
+
+ <div class="col-lg-3 container-fluid" id="capacity-bar-chart">
+ {{bar-chart data=model.selectedQueue.capacitiesBarChartData
+ title="Queue Capacities"
+ parentId="capacity-bar-chart"
+ textWidth=150
+ ratio=0.5
+ maxHeight=350}}
+ </div>
+
+{{#if model.selectedQueue.hasUserUsages}}
+ <div class="col-lg-3 container-fluid" id="userusage-donut-chart">
+ {{donut-chart data=model.selectedQueue.userUsagesDonutChartData
+ title="User Usages"
+ showLabels=true
+ parentId="userusage-donut-chart"
+ maxHeight=350}}
+ </div>
+{{/if}}
+
+ <div class="col-lg-3 container-fluid" id="numapplications-donut-chart">
+ {{donut-chart data=model.selectedQueue.numOfApplicationsDonutChartData
+ title="Running Apps"
+ showLabels=true
+ parentId="numapplications-donut-chart"
+ ratio=0.5
+ maxHeight=350}}
+ </div>
+</div>
+
+<hr>
+
+<div class="row">
+ <div class="col-md-12 container-fluid">
+ {{app-table table-id="apps-table" arr=model.apps}}
+ {{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
+ </div>
+</div>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
new file mode 100644
index 0000000..41e6c9c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
@@ -0,0 +1,74 @@
+export default {
+ containerIdToAttemptId: function(containerId) {
+ if (containerId) {
+ var arr = containerId.split('_');
+ var attemptId = ["appattempt", arr[1],
+ arr[2], this.padding(arr[3], 6)];
+ return attemptId.join('_');
+ }
+ },
+ attemptIdToAppId: function(attemptId) {
+ if (attemptId) {
+ var arr = attemptId.split('_');
+ var appId = ["application", arr[1],
+ arr[2]].join('_');
+ return appId;
+ }
+ },
+ padding: function(str, toLen=2) {
+ str = str.toString();
+ if (str.length >= toLen) {
+ return str;
+ }
+ return '0'.repeat(toLen - str.length) + str;
+ },
+ resourceToString: function(mem, cpu) {
+ mem = Math.max(0, mem);
+ cpu = Math.max(0, cpu);
+ return mem + " MBs, " + cpu + " VCores";
+ },
+ msToElapsedTime: function(timeInMs) {
+ var sec_num = timeInMs / 1000; // don't forget the second param
+ var hours = Math.floor(sec_num / 3600);
+ var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
+ var seconds = sec_num - (hours * 3600) - (minutes * 60);
+
+ var timeStrArr = [];
+
+ if (hours > 0) {
+ timeStrArr.push(hours + ' Hrs');
+ }
+ if (minutes > 0) {
+ timeStrArr.push(minutes + ' Mins');
+ }
+ if (seconds > 0) {
+ timeStrArr.push(Math.round(seconds) + " Secs");
+ }
+ return timeStrArr.join(' : ');
+ },
+ elapsedTimeToMs: function(elapsedTime) {
+ elapsedTime = elapsedTime.toLowerCase();
+ var arr = elapsedTime.split(' : ');
+ var total = 0;
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i].indexOf('hr') > 0) {
+ total += parseInt(arr[i].substring(0, arr[i].indexOf(' '))) * 3600;
+ } else if (arr[i].indexOf('min') > 0) {
+ total += parseInt(arr[i].substring(0, arr[i].indexOf(' '))) * 60;
+ } else if (arr[i].indexOf('sec') > 0) {
+ total += parseInt(arr[i].substring(0, arr[i].indexOf(' ')));
+ }
+ }
+ return total * 1000;
+ },
+ timeStampToDate: function(timeStamp) {
+ var dateTimeString = moment(parseInt(timeStamp)).format("YYYY/MM/DD HH:mm:ss");
+ return dateTimeString;
+ },
+ dateToTimeStamp: function(date) {
+ if (date) {
+ var ts = moment(date, "YYYY/MM/DD HH:mm:ss").valueOf();
+ return ts;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
new file mode 100644
index 0000000..981429b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
@@ -0,0 +1,15 @@
+import Converter from 'yarn-ui/utils/converter';
+
+export default {
+ _initElapsedTimeSorter: function() {
+ jQuery.extend(jQuery.fn.dataTableExt.oSort, {
+ "elapsed-time-pre": function (a) {
+ return Converter.padding(Converter.elapsedTimeToMs(a), 20);
+ },
+ });
+ },
+
+ initDataTableSorter: function() {
+ this._initElapsedTimeSorter();
+ },
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
new file mode 100644
index 0000000..ec587bb
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
@@ -0,0 +1,22 @@
+{
+ "name": "yarn-ui",
+ "dependencies": {
+ "ember": "2.0.1",
+ "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.4",
+ "ember-cli-test-loader": "ember-cli-test-loader#0.1.3",
+ "ember-data": "2.0.0",
+ "ember-load-initializers": "ember-cli/ember-load-initializers#0.1.6",
+ "ember-qunit": "0.4.9",
+ "ember-qunit-notifications": "0.0.7",
+ "ember-resolver": "~0.1.18",
+ "jquery": "^1.11.3",
+ "loader.js": "ember-cli/loader.js#3.2.1",
+ "qunit": "~1.18.0",
+ "bootstrap": "~3.3.2",
+ "d3": "~3.5.6",
+ "datatables": "~1.10.8",
+ "spin.js": "~2.3.2",
+ "momentjs": "~2.10.6",
+ "select2": "4.0.0"
+ }
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
new file mode 100644
index 0000000..b898e0d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
@@ -0,0 +1,47 @@
+/* jshint node: true */
+
+module.exports = function(environment) {
+ var ENV = {
+ modulePrefix: 'yarn-ui',
+ environment: environment,
+ baseURL: '/',
+ locationType: 'auto',
+ EmberENV: {
+ FEATURES: {
+ // Here you can enable experimental features on an ember canary build
+ // e.g. 'with-controller': true
+ }
+ },
+
+ APP: {
+ // Here you can pass flags/options to your application instance
+ // when it is created
+ }
+ };
+
+ if (environment === 'development') {
+ // ENV.APP.LOG_RESOLVER = true;
+ // ENV.APP.LOG_ACTIVE_GENERATION = true;
+ // ENV.APP.LOG_TRANSITIONS = true;
+ // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
+ // ENV.APP.LOG_VIEW_LOOKUPS = true;
+ }
+
+ if (environment === 'test') {
+ // Testem prefers this...
+ ENV.baseURL = '/';
+ ENV.locationType = 'none';
+
+ // keep test console output quieter
+ ENV.APP.LOG_ACTIVE_GENERATION = false;
+ ENV.APP.LOG_VIEW_LOOKUPS = false;
+
+ ENV.APP.rootElement = '#ember-testing';
+ }
+
+ if (environment === 'production') {
+
+ }
+
+ return ENV;
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/ember-cli-build.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/ember-cli-build.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/ember-cli-build.js
new file mode 100644
index 0000000..2fa2032
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/ember-cli-build.js
@@ -0,0 +1,29 @@
+/* global require, module */
+var EmberApp = require('ember-cli/lib/broccoli/ember-app');
+
+module.exports = function(defaults) {
+ var app = new EmberApp(defaults, {
+ // Add options here
+ });
+
+ app.import("bower_components/datatables/media/css/jquery.dataTables.min.css");
+ app.import("bower_components/datatables/media/js/jquery.dataTables.min.js");
+ app.import("bower_components/momentjs/min/moment.min.js");
+ app.import("bower_components/select2/dist/css/select2.min.css");
+ app.import("bower_components/select2/dist/js/select2.min.js");
+
+ // Use `app.import` to add additional libraries to the generated
+ // output files.
+ //
+ // If you need to use different assets in different
+ // environments, specify an object as the first parameter. That
+ // object's keys should be the environment name and the values
+ // should be the asset to use in that environment.
+ //
+ // If the library that you are including contains AMD or ES6
+ // modules that you would like to import into your application
+ // please specify an object with the list of modules as keys
+ // along with the exports of each module as its value.
+
+ return app.toTree();
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/jsconfig.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/jsconfig.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/jsconfig.json
new file mode 100644
index 0000000..875bb90
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/jsconfig.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "target": "ES6",
+ "module": "commonjs"
+ }
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/package.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/package.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/package.json
new file mode 100644
index 0000000..5500dcf
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "yarn-ui",
+ "version": "0.0.0",
+ "description": "Small description for yarn-ui goes here",
+ "private": true,
+ "directories": {
+ "doc": "doc",
+ "test": "tests"
+ },
+ "scripts": {
+ "build": "ember build",
+ "start": "ember server",
+ "test": "ember test"
+ },
+ "repository": "",
+ "engines": {
+ "node": ">= 0.10.0"
+ },
+ "author": "",
+ "license": "MIT",
+ "devDependencies": {
+ "broccoli-asset-rev": "^2.1.2",
+ "ember-bootstrap": "0.2.0",
+ "ember-cli": "1.13.8",
+ "ember-cli-app-version": "0.5.0",
+ "ember-cli-babel": "^5.1.3",
+ "ember-cli-content-security-policy": "0.4.0",
+ "ember-cli-dependency-checker": "^1.0.1",
+ "ember-cli-htmlbars": "0.7.9",
+ "ember-cli-htmlbars-inline-precompile": "^0.2.0",
+ "ember-cli-ic-ajax": "0.2.1",
+ "ember-cli-inject-live-reload": "^1.3.1",
+ "ember-cli-qunit": "^1.0.0",
+ "ember-cli-release": "0.2.3",
+ "ember-cli-sri": "^1.0.3",
+ "ember-cli-uglify": "^1.2.0",
+ "ember-d3": "0.1.0",
+ "ember-data": "1.13.8",
+ "ember-disable-proxy-controllers": "^1.0.0",
+ "ember-export-application-global": "^1.0.3",
+ "ember-spin-spinner": "0.2.3",
+ "select2": "4.0.0"
+ }
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/Sorting icons.psd
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/Sorting icons.psd b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/Sorting icons.psd
new file mode 100644
index 0000000..53b2e06
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/Sorting icons.psd differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/favicon.ico
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/favicon.ico b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/favicon.ico
new file mode 100644
index 0000000..6eeaa2a
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/favicon.ico differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc.png
new file mode 100644
index 0000000..e1ba61a
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc_disabled.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc_disabled.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc_disabled.png
new file mode 100644
index 0000000..fb11dfe
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_asc_disabled.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_both.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_both.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_both.png
new file mode 100644
index 0000000..af5bc7c
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_both.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc.png
new file mode 100644
index 0000000..0e156de
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc_disabled.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc_disabled.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc_disabled.png
new file mode 100644
index 0000000..c9fdd8a
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/assets/images/datatables/sort_desc_disabled.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/crossdomain.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/crossdomain.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/crossdomain.xml
new file mode 100644
index 0000000..0c16a7a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/crossdomain.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
+<cross-domain-policy>
+ <!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
+
+ <!-- Most restrictive policy: -->
+ <site-control permitted-cross-domain-policies="none"/>
+
+ <!-- Least restrictive policy: -->
+ <!--
+ <site-control permitted-cross-domain-policies="all"/>
+ <allow-access-from domain="*" to-ports="*" secure="false"/>
+ <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
+ -->
+</cross-domain-policy>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/robots.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/robots.txt b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/robots.txt
new file mode 100644
index 0000000..f591645
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/public/robots.txt
@@ -0,0 +1,3 @@
+# http://www.robotstxt.org
+User-agent: *
+Disallow:
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/testem.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/testem.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/testem.json
new file mode 100644
index 0000000..0f35392
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/testem.json
@@ -0,0 +1,12 @@
+{
+ "framework": "qunit",
+ "test_page": "tests/index.html?hidepassed",
+ "disable_watching": true,
+ "launch_in_ci": [
+ "PhantomJS"
+ ],
+ "launch_in_dev": [
+ "PhantomJS",
+ "Chrome"
+ ]
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc
new file mode 100644
index 0000000..6ec0b7c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc
@@ -0,0 +1,52 @@
+{
+ "predef": [
+ "document",
+ "window",
+ "location",
+ "setTimeout",
+ "$",
+ "-Promise",
+ "define",
+ "console",
+ "visit",
+ "exists",
+ "fillIn",
+ "click",
+ "keyEvent",
+ "triggerEvent",
+ "find",
+ "findWithAssert",
+ "wait",
+ "DS",
+ "andThen",
+ "currentURL",
+ "currentPath",
+ "currentRouteName"
+ ],
+ "node": false,
+ "browser": false,
+ "boss": true,
+ "curly": true,
+ "debug": false,
+ "devel": false,
+ "eqeqeq": true,
+ "evil": true,
+ "forin": false,
+ "immed": false,
+ "laxbreak": false,
+ "newcap": true,
+ "noarg": true,
+ "noempty": false,
+ "nonew": false,
+ "nomen": false,
+ "onevar": false,
+ "plusplus": false,
+ "regexp": false,
+ "undef": true,
+ "sub": true,
+ "strict": false,
+ "white": false,
+ "eqnull": true,
+ "esnext": true,
+ "unused": true
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/resolver.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/resolver.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/resolver.js
new file mode 100644
index 0000000..28f4ece
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/resolver.js
@@ -0,0 +1,11 @@
+import Resolver from 'ember/resolver';
+import config from '../../config/environment';
+
+var resolver = Resolver.create();
+
+resolver.namespace = {
+ modulePrefix: config.modulePrefix,
+ podModulePrefix: config.podModulePrefix
+};
+
+export default resolver;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/start-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/start-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/start-app.js
new file mode 100644
index 0000000..0f7aab1
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/helpers/start-app.js
@@ -0,0 +1,18 @@
+import Ember from 'ember';
+import Application from '../../app';
+import config from '../../config/environment';
+
+export default function startApp(attrs) {
+ var application;
+
+ var attributes = Ember.merge({}, config.APP);
+ attributes = Ember.merge(attributes, attrs); // use defaults, but you can override;
+
+ Ember.run(function() {
+ application = Application.create(attributes);
+ application.setupForTesting();
+ application.injectTestHelpers();
+ });
+
+ return application;
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/index.html
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/index.html b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/index.html
new file mode 100644
index 0000000..33f7045
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/index.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <title>YarnUi Tests</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ {{content-for 'head'}}
+ {{content-for 'test-head'}}
+
+ <link rel="stylesheet" href="assets/vendor.css">
+ <link rel="stylesheet" href="assets/yarn-ui.css">
+ <link rel="stylesheet" href="assets/test-support.css">
+
+ {{content-for 'head-footer'}}
+ {{content-for 'test-head-footer'}}
+ </head>
+ <body>
+
+ {{content-for 'body'}}
+ {{content-for 'test-body'}}
+ <script src="assets/vendor.js"></script>
+ <script src="assets/test-support.js"></script>
+ <script src="assets/yarn-ui.js"></script>
+ <script src="testem.js"></script>
+ <script src="assets/test-loader.js"></script>
+
+ {{content-for 'body-footer'}}
+ {{content-for 'test-body-footer'}}
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/test-helper.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/test-helper.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/test-helper.js
new file mode 100644
index 0000000..e6cfb70
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/test-helper.js
@@ -0,0 +1,6 @@
+import resolver from './helpers/resolver';
+import {
+ setResolver
+} from 'ember-qunit';
+
+setResolver(resolver);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/.gitkeep
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-app-test.js
new file mode 100644
index 0000000..5683d5a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/adapters/yarn-app-test.js
@@ -0,0 +1,12 @@
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-app', 'Unit | Adapter | yarn app', {
+ // Specify the other units that are required for this test.
+ // needs: ['serializer:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ var adapter = this.subject();
+ assert.ok(adapter);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-apps-test.js
new file mode 100644
index 0000000..d25f72d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-apps-test.js
@@ -0,0 +1,12 @@
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-apps', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ var controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-queues-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-queues-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-queues-test.js
new file mode 100644
index 0000000..313dfdd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/controllers/yarn-queues-test.js
@@ -0,0 +1,12 @@
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-queues', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ var controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/mixins/charts-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/mixins/charts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/mixins/charts-test.js
new file mode 100644
index 0000000..b4f3503
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/mixins/charts-test.js
@@ -0,0 +1,12 @@
+import Ember from 'ember';
+import ChartsMixin from '../../../mixins/charts';
+import { module, test } from 'qunit';
+
+module('Unit | Mixin | charts');
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ var ChartsObject = Ember.Object.extend(ChartsMixin);
+ var subject = ChartsObject.create();
+ assert.ok(subject);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-app-test.js
new file mode 100644
index 0000000..e3261e2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/models/yarn-app-test.js
@@ -0,0 +1,12 @@
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-app', 'Unit | Model | yarn app', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('it exists', function(assert) {
+ var model = this.subject();
+ // var store = this.store();
+ assert.ok(!!model);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-apps-test.js
new file mode 100644
index 0000000..a438b2e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/routes/yarn-apps-test.js
@@ -0,0 +1,11 @@
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-apps', 'Unit | Route | yarn apps', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+test('it exists', function(assert) {
+ var route = this.subject();
+ assert.ok(route);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-app-test.js
new file mode 100644
index 0000000..a169fd5
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/serializers/yarn-app-test.js
@@ -0,0 +1,15 @@
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-app', 'Unit | Serializer | yarn app', {
+ // Specify the other units that are required for this test.
+ needs: ['serializer:yarn-app']
+});
+
+// Replace this with your real tests.
+test('it serializes records', function(assert) {
+ var record = this.subject();
+
+ var serializedRecord = record.serialize();
+
+ assert.ok(serializedRecord);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
new file mode 100644
index 0000000..55cf71d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tests/unit/utils/converter-test.js
@@ -0,0 +1,10 @@
+import converter from '../../../utils/converter';
+import { module, test } from 'qunit';
+
+module('Unit | Utility | converter');
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ var result = converter();
+ assert.ok(result);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/vendor/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/vendor/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/vendor/.gitkeep
new file mode 100644
index 0000000..e69de29
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[18/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup
code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
new file mode 100644
index 0000000..89858bf
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
@@ -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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ selected : param.queue_name,
+ queues: this.store.findAll('yarnQueue'),
+ selectedQueue : undefined,
+ apps: undefined, // apps of selected queue
+ });
+ },
+
+ afterModel(model) {
+ model.selectedQueue = this.store.peekRecord('yarnQueue', model.selected);
+ model.apps = this.store.findAll('yarnApp');
+ model.apps.forEach(function(o) {
+ console.log(o);
+ })
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/index.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/index.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/index.js
new file mode 100644
index 0000000..7da6f6d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/index.js
@@ -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.
+ */
+
+export default Ember.Route.extend({
+ beforeModel() {
+ this.transitionTo('yarnQueues.root');
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/queues-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/queues-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/queues-selector.js
new file mode 100644
index 0000000..3686c83
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/queues-selector.js
@@ -0,0 +1,25 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model() {
+ return this.store.findAll('yarnQueue');
+ },
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/cluster-info.js
new file mode 100644
index 0000000..fad321a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/cluster-info.js
@@ -0,0 +1,47 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.JSONAPISerializer.extend({
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: payload
+ };
+
+ return this._super(store, primaryModelClass, fixedPayload, id,
+ requestType);
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = [
+ this.normalizeSingleResponse(store, primaryModelClass,
+ payload.clusterInfo, payload.clusterInfo.id, requestType)
+ ];
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/cluster-metric.js
new file mode 100644
index 0000000..73c4bc5
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/cluster-metric.js
@@ -0,0 +1,47 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.JSONAPISerializer.extend({
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: payload
+ };
+
+ return this._super(store, primaryModelClass, fixedPayload, id,
+ requestType);
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = [
+ this.normalizeSingleResponse(store, primaryModelClass,
+ payload.clusterMetrics, 1, requestType)
+ ];
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
new file mode 100644
index 0000000..291589c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
@@ -0,0 +1,67 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+
+ if (payload.appAttempt) {
+ payload = payload.appAttempt;
+ }
+
+ var fixedPayload = {
+ id: payload.appAttemptId,
+ type: primaryModelClass.modelName, // yarn-app
+ attributes: {
+ startTime: Converter.timeStampToDate(payload.startTime),
+ finishedTime: Converter.timeStampToDate(payload.finishedTime),
+ containerId: payload.containerId,
+ nodeHttpAddress: payload.nodeHttpAddress,
+ nodeId: payload.nodeId,
+ state: payload.nodeId,
+ logsLink: payload.logsLink
+ }
+ };
+
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id, requestType);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.appAttempts.appAttempt.map(singleApp => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleApp, singleApp.id, requestType);
+ }, this);
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
new file mode 100644
index 0000000..234ad24
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
@@ -0,0 +1,84 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ if (payload.app) {
+ payload = payload.app;
+ }
+
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName, // yarn-app
+ attributes: {
+ appName: payload.name,
+ user: payload.user,
+ queue: payload.queue,
+ state: payload.state,
+ startTime: Converter.timeStampToDate(payload.startedTime),
+ elapsedTime: Converter.msToElapsedTime(payload.elapsedTime),
+ finishedTime: Converter.timeStampToDate(payload.finishedTime),
+ finalStatus: payload.finalStatus,
+ progress: payload.progress,
+ diagnostics: payload.diagnostics,
+ amContainerLogs: payload.amContainerLogs,
+ amHostHttpAddress: payload.amHostHttpAddress,
+ logAggregationStatus: payload.logAggregationStatus,
+ unmanagedApplication: payload.unmanagedApplication,
+ amNodeLabelExpression: payload.amNodeLabelExpression,
+ priority: payload.priority,
+ allocatedMB: payload.allocatedMB,
+ allocatedVCores: payload.allocatedVCores,
+ runningContainers: payload.runningContainers,
+ memorySeconds: payload.memorySeconds,
+ vcoreSeconds: payload.vcoreSeconds,
+ preemptedResourceMB: payload.preemptedResourceMB,
+ preemptedResourceVCores: payload.preemptedResourceVCores,
+ numNonAMContainerPreempted: payload.numNonAMContainerPreempted,
+ numAMContainerPreempted: payload.numAMContainerPreempted
+ }
+ };
+
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id, requestType);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleApp, singleApp.id, requestType);
+ }, this);
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container-log.js
new file mode 100644
index 0000000..9e10615
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container-log.js
@@ -0,0 +1,39 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // Convert plain text response into JSON.
+ // ID is of the form nodeAddress!containerId!fileName
+ var splits = Converter.splitForContainerLogs(id);
+ var convertedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ logs: payload,
+ containerID: splits[1],
+ logFileName: splits[2]
+ }
+ };
+ return { data: convertedPayload };
+ },
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
new file mode 100644
index 0000000..6f0386f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
@@ -0,0 +1,72 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+
+ var fixedPayload = {
+ id: payload.containerId,
+ type: primaryModelClass.modelName, // yarn-app
+ attributes: {
+ allocatedMB: payload.allocatedMB,
+ allocatedVCores: payload.allocatedVCores,
+ assignedNodeId: payload.assignedNodeId,
+ priority: payload.priority,
+ startedTime: Converter.timeStampToDate(payload.startedTime),
+ finishedTime: Converter.timeStampToDate(payload.finishedTime),
+ elapsedTime: payload.elapsedTime,
+ logUrl: payload.logUrl,
+ containerExitStatus: payload.containerExitStatus,
+ containerState: payload.containerState,
+ nodeHttpAddress: payload.nodeHttpAddress
+ }
+ };
+
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id, requestType);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ if (payload && payload.container) {
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.container.map(singleContainer => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleContainer, singleContainer.id, requestType);
+ }, this);
+ return normalizedArrayResponse;
+ }
+
+ normalizedArrayResponse.data = [];
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
new file mode 100644
index 0000000..8b1f152
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
@@ -0,0 +1,86 @@
+/**
+ * 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.
+ */
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Ember from 'ember';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload) {
+ if (payload.app) {
+ payload = payload.app;
+ }
+
+ var fixedPayload = {
+ id: payload.id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ appId: payload.id,
+ state: payload.state,
+ user: payload.user,
+ containers: payload.containerids
+ }
+ };
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // payload is of the form {"app":{}}
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // expected return response is of the form { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+ // payload is of the form { "apps" : { "app": [ {},{},{} ] } }
+ if (payload.apps) {
+ normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleApp);
+ }, this);
+ } else {
+ // No container reported inside containers.
+ // Response of the form { "apps": null }
+ normalizedArrayResponse.data = Ember.makeArray({
+ id: "dummy",
+ type: primaryModelClass.modelName,
+ attributes: {}});
+ }
+ return normalizedArrayResponse;
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
new file mode 100644
index 0000000..528f2fe
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Ember from 'ember';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload) {
+ if (payload.container) {
+ payload = payload.container;
+ }
+ var fixedPayload = {
+ id: payload.id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ containerId: payload.id,
+ state: payload.state,
+ user: payload.user,
+ diagnostics: payload.diagnostics,
+ exitCode: payload.exitCode,
+ totalMemoryNeeded: payload.totalMemoryNeededMB,
+ totalVCoresNeeded: payload.totalVCoresNeeded,
+ containerLogFiles: payload.containerLogFiles
+ }
+ };
+
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // payload is of the form {"container":{}}
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // expected return response is of the form { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+ if (payload.containers) {
+ // payload is of the form { "containers" : { "container": [ {},{},{} ] } }
+ normalizedArrayResponse.data =
+ payload.containers.container.map(singleContainer => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleContainer);
+ }, this);
+ } else {
+ // No container reported inside containers.
+ // Response of the form { "containers": null }
+ normalizedArrayResponse.data = Ember.makeArray({
+ id: "dummy",
+ type: primaryModelClass.modelName,
+ attributes: {}});
+ }
+ return normalizedArrayResponse;
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node.js
new file mode 100644
index 0000000..19308e2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node.js
@@ -0,0 +1,56 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ if (payload.nodeInfo) {
+ payload = payload.nodeInfo;
+ }
+
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ totalVmemAllocatedContainersMB: payload.totalVmemAllocatedContainersMB,
+ totalPmemAllocatedContainersMB: payload.totalPmemAllocatedContainersMB,
+ totalVCoresAllocatedContainers: payload.totalVCoresAllocatedContainers,
+ vmemCheckEnabled: payload.vmemCheckEnabled,
+ pmemCheckEnabled: payload.pmemCheckEnabled,
+ nodeHealthy: payload.nodeHealthy,
+ lastNodeUpdateTime: Converter.timeStampToDate(payload.lastNodeUpdateTime),
+ healthReport: payload.healthReport,
+ nmStartupTime: Converter.timeStampToDate(payload.nmStartupTime),
+ nodeManagerBuildVersion: payload.nodeManagerBuildVersion,
+ hadoopBuildVersion: payload.hadoopBuildVersion
+ }
+ };
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // payload is of the form {"nodeInfo":{}}
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id, requestType);
+ return { data: p };
+ },
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-queue.js
new file mode 100644
index 0000000..1c5b7b3
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-queue.js
@@ -0,0 +1,145 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.JSONAPISerializer.extend({
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var children = [];
+ if (payload.queues) {
+ payload.queues.queue.forEach(function(queue) {
+ children.push(queue.queueName);
+ });
+ }
+
+ var includedData = [];
+ var relationshipUserData = [];
+
+ // update user models
+ if (payload.users && payload.users.user) {
+ payload.users.user.forEach(function(u) {
+ includedData.push({
+ type: "YarnUser",
+ id: u.username + "_" + payload.queueName,
+ attributes: {
+ name: u.username,
+ queueName: payload.queueName,
+ usedMemoryMB: u.resourcesUsed.memory || 0,
+ usedVCore: u.resourcesUsed.vCores || 0,
+ }
+ });
+
+ relationshipUserData.push({
+ type: "YarnUser",
+ id: u.username + "_" + payload.queueName,
+ })
+ });
+ }
+
+
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName, // yarn-queue
+ attributes: {
+ name: payload.queueName,
+ parent: payload.myParent,
+ children: children,
+ capacity: payload.capacity,
+ usedCapacity: payload.usedCapacity,
+ maxCapacity: payload.maxCapacity,
+ absCapacity: payload.absoluteCapacity,
+ absMaxCapacity: payload.absoluteMaxCapacity,
+ absUsedCapacity: payload.absoluteUsedCapacity,
+ state: payload.state,
+ userLimit: payload.userLimit,
+ userLimitFactor: payload.userLimitFactor,
+ preemptionDisabled: payload.preemptionDisabled,
+ numPendingApplications: payload.numPendingApplications,
+ numActiveApplications: payload.numActiveApplications,
+ },
+ // Relationships
+ relationships: {
+ users: {
+ data: relationshipUserData
+ }
+ }
+ };
+
+ return {
+ queue: this._super(store, primaryModelClass, fixedPayload, id, requestType),
+ includedData: includedData
+ }
+ },
+
+ handleQueue(store, primaryModelClass, payload, id, requestType) {
+ var data = [];
+ var includedData = []
+ var result = this.normalizeSingleResponse(store, primaryModelClass,
+ payload, id, requestType);
+
+ data.push(result.queue);
+ includedData = includedData.concat(result.includedData);
+
+ if (payload.queues) {
+ for (var i = 0; i < payload.queues.queue.length; i++) {
+ var queue = payload.queues.queue[i];
+ queue.myParent = payload.queueName;
+ var childResult = this.handleQueue(store, primaryModelClass, queue,
+ queue.queueName,
+ requestType);
+
+ data = data.concat(childResult.data);
+ includedData = includedData.concat(childResult.includedData);
+ }
+ }
+
+ return {
+ data: data,
+ includedData, includedData
+ }
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var normalizedArrayResponse = {};
+ var result = this.handleQueue(store,
+ primaryModelClass,
+ payload.scheduler.schedulerInfo, "root", requestType);
+
+ normalizedArrayResponse.data = result.data;
+ normalizedArrayResponse.included = result.includedData;
+
+ console.log(normalizedArrayResponse);
+
+ return normalizedArrayResponse;
+
+ /*
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
+ return this.normalizeSingleResponse(store, primaryModelClass, singleApp, singleApp.id, requestType);
+ }, this);
+ return normalizedArrayResponse;
+ */
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-rm-node.js
new file mode 100644
index 0000000..6cb9320
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-rm-node.js
@@ -0,0 +1,77 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPISerializer.extend({
+ internalNormalizeSingleResponse(store, primaryModelClass, payload, id) {
+ if (payload.node) {
+ payload = payload.node;
+ }
+
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: {
+ rack: payload.rack,
+ state: payload.state,
+ nodeHostName: payload.nodeHostName,
+ nodeHTTPAddress: payload.nodeHTTPAddress,
+ lastHealthUpdate: Converter.timeStampToDate(payload.lastHealthUpdate),
+ healthReport: payload.healthReport,
+ numContainers: payload.numContainers,
+ usedMemoryMB: payload.usedMemoryMB,
+ availMemoryMB: payload.availMemoryMB,
+ usedVirtualCores: payload.usedVirtualCores,
+ availableVirtualCores: payload.availableVirtualCores,
+ version: payload.version,
+ nodeLabels: payload.nodeLabels
+ }
+ };
+ return fixedPayload;
+ },
+
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // payload is of the form {"nodeInfo":{}}
+ var p = this.internalNormalizeSingleResponse(store,
+ primaryModelClass, payload, id);
+ return { data: p };
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // expected response is of the form { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+ if (payload.nodes) {
+ // payload is of the form { "nodes": { "node": [ {},{},{} ] } }
+ normalizedArrayResponse.data = payload.nodes.node.map(singleNode => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleNode, singleNode.id);
+ }, this);
+ } else {
+ normalizedArrayResponse.data = Ember.makeArray({
+ id: "dummy",
+ type: primaryModelClass.modelName,
+ attributes: {}});
+ }
+ return normalizedArrayResponse;
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
new file mode 100644
index 0000000..bcb6aab
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
@@ -0,0 +1,159 @@
+/**
+ * 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.
+ */
+
+/*
+ Over all style
+ */
+text {
+ font: 12px sans-serif;
+}
+
+text.small {
+ font: 8px sans-serif;
+}
+
+html, body
+{
+ margin: 0px;
+ padding: 0px;
+ height: 100%;
+ width: 100%;
+}
+
+/*
+ queue's style (left banner of queues)
+ */
+
+text.queue {
+ font-family : sans-serif;
+ font-size : 15px;
+ fill : gray;
+}
+
+path.queue {
+ stroke: gray;
+ fill: none;
+}
+
+circle.queue {
+ r: 10;
+ fill: Steelblue;
+}
+
+/*
+ background style
+ */
+line.grid {
+ stroke: WhiteSmoke;
+}
+
+line.chart {
+ stroke: Gray;
+}
+
+/*
+ charts styles
+ */
+text.chart-title {
+ font-size: 30px;
+ font-family: sans-serif;
+ text-anchor: middle;
+ fill: Gray;
+}
+
+text.donut-highlight-text {
+ font-size: 20px;
+ font-family: sans-serif;
+ text-anchor: middle;
+ fill: Gray;
+ vertical-align: middle;
+}
+
+rect.chart-frame {
+ fill: none;
+ stroke: gray;
+ stroke-dasharray: 10,10;
+}
+
+line.chart-leftbanner {
+ stroke-width: 2;
+ stroke: gray;
+ stroke-dasharray: 10,10;
+}
+
+text.bar-chart-text {
+ font-size: 8px;
+ font-family: sans-serif;
+ vertical-align: middle;
+ fill: Gray;;
+}
+
+div.tooltip {
+ position: absolute;
+ text-align: center;
+ /*height: 28px;*/
+ padding: 2px;
+ font: 12px sans-serif;
+ background: lightsteelblue;
+ border: 0px;
+ border-radius: 8px;
+ pointer-events: none;
+}
+
+/*
+ * Data table
+ */
+
+table.dataTable thead .sorting {
+ background-image: url("/assets/images/datatables/sort_both.png");
+}
+table.dataTable thead .sorting_asc {
+ background-image: url("/assets/images/datatables/sort_asc.png");
+}
+table.dataTable thead .sorting_desc {
+ background-image: url("/assets/images/datatables/sort_desc.png");
+}
+table.dataTable thead .sorting_asc_disabled {
+ background-image: url("/assets/images/datatables/sort_asc_disabled.png");
+}
+table.dataTable thead .sorting_desc_disabled {
+ background-image: url("/assets/images/datatables/sort_desc_disabled.png");
+}
+
+/*
+ * Queue selector
+ */
+.node {
+ cursor: pointer;
+}
+
+.node circle {
+ fill: #fff;
+ stroke: steelblue;
+ stroke-width: 3px;
+}
+
+.node text {
+ font: 12px sans-serif;
+}
+
+.link {
+ fill: none;
+ stroke: #ccc;
+ stroke-width: 2px;
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
new file mode 100644
index 0000000..88702c4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
@@ -0,0 +1,41 @@
+{{!
+ * 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.
+}}
+
+<nav class="navbar navbar-default">
+ <div class="container-fluid">
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="#">Apache Hadoop YARN</a>
+ </div>
+
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav">
+ {{outputMainMenu}}
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div><!-- /.container-fluid -->
+</nav>
+
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
new file mode 100644
index 0000000..2094092
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
@@ -0,0 +1,74 @@
+{{!
+ * 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.
+}}
+
+<div class="row">
+ <div class="col-lg-3 container-fluid" id="finishedapps-donut-chart">
+ {{donut-chart data=model.firstObject.getFinishedAppsDataForDonutChart
+ title="Finished Apps"
+ showLabels=true
+ parentId="finishedapps-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+
+ <div class="col-lg-3 container-fluid" id="runningapps-donut-chart">
+ {{donut-chart data=model.firstObject.getRunningAppsDataForDonutChart
+ title="Running Apps"
+ showLabels=true
+ parentId="runningapps-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+</div>
+
+<hr>
+
+<div class="row">
+ <div class="col-lg-3 container-fluid" id="nodes-donut-chart">
+ {{donut-chart data=model.firstObject.getNodesDataForDonutChart
+ title="Node Managers"
+ showLabels=true
+ parentId="nodes-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+</div>
+
+<hr>
+
+<div class="row">
+ <div class="col-lg-3 container-fluid" id="mem-donut-chart">
+ {{donut-chart data=model.firstObject.getMemoryDataForDonutChart
+ title="Resource - Memory"
+ showLabels=true
+ parentId="mem-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+
+ <div class="col-lg-3 container-fluid" id="vcore-donut-chart">
+ {{donut-chart data=model.firstObject.getVCoreDataForDonutChart
+ title="Resource - VCores"
+ showLabels=true
+ parentId="vcore-donut-chart"
+ ratio=0.6
+ maxHeight=350}}
+ </div>
+</div>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-attempt-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-attempt-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-attempt-table.hbs
new file mode 100644
index 0000000..722f780
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-attempt-table.hbs
@@ -0,0 +1,46 @@
+{{!
+ * 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.
+}}
+
+<table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <tbody>
+ <tr>
+ <td>Application Attempt Id</td>
+ <td>{{attempt.id}}</td>
+ </tr>
+ <tr>
+ <td>Start Time</td>
+ <td>{{attempt.startTime}}</td>
+ </tr>
+ <tr>
+ <td>AM Container Id</td>
+ <td>{{attempt.containerId}}</td>
+ </tr>
+ <tr>
+ <td>AM Node Web UI</td>
+ <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
+ </tr>
+ <tr>
+ <td>AM Node Id</td>
+ <td>{{attempt.nodeId}}</td>
+ </tr>
+ <tr>
+ <td>Log</td>
+ <td><a href={{attempt.logsLink}}>link</a></td>
+ </tr>
+ </tbody>
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
new file mode 100644
index 0000000..fb0fb6f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
@@ -0,0 +1,80 @@
+{{!
+ * 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.
+}}
+
+<table id={{table-id}} class="display table table-striped table-bordered" cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Application ID</th>
+ <th>Name</th>
+ <th>User</th>
+ <th>Queue</th>
+ <th>State</th>
+ <th>Final Status</th>
+ <th>Start Time</th>
+ <th>Elapsed Time</th> <!-- idx = 7 -->
+ <th>Finished Time</th>
+ <th>Priority</th>
+ <th>Progress</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if arr}}
+ {{#each arr as |app|}}
+ <tr>
+ <td><a href="yarnApp/{{app.id}}">{{app.id}}</a></td>
+ <td>{{app.appName}}</td>
+ <td>{{app.user}}</td>
+ <td>{{app.queue}}</td>
+ <td>{{app.state}}</td>
+ <td><span class={{app.finalStatusStyle}}>{{app.finalStatus}}</span></td>
+ <td>{{app.startTime}}</td>
+ <td>{{app.elapsedTime}}</td>
+ <td>{{app.finishedTime}}</td>
+ <td>{{app.priority}}</td>
+ <td>
+ <div class="progress" style="margin-bottom: 0;">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style={{app.progressStyle}}>
+ {{app.progress}}%
+ </div>
+ </div>
+ </td>
+ </tr>
+ {{/each}}
+ {{else}}
+ <tr>
+ <td><a href="yarnApp/{{app.id}}">{{app.id}}</a></td>
+ <td>{{app.appName}}</td>
+ <td>{{app.user}}</td>
+ <td>{{app.queue}}</td>
+ <td>{{app.state}}</td>
+ <td><span class={{app.finalStatusStyle}}>{{app.finalStatus}}</span></td>
+ <td>{{app.startTime}}</td>
+ <td>{{app.elapsedTime}}</td>
+ <td>{{app.finishedTime}}</td>
+ <td>{{app.priority}}</td>
+ <td>
+ <div class="progress" style="margin-bottom: 0;">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style={{app.progressStyle}}>
+ {{app.progress}}%
+ </div>
+ </div>
+ </td>
+ </tr>
+ {{/if}}
+ </tbody>
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/container-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/container-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/container-table.hbs
new file mode 100644
index 0000000..dcc31da
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/container-table.hbs
@@ -0,0 +1,54 @@
+{{!
+ * 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.
+}}
+
+<table id="container-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <tbody>
+ <tr>
+ <td>Start Time</td>
+ <td>{{container.startedTime}}</td>
+ </tr>
+ <tr>
+ <td>Finished Time</td>
+ <td>{{container.finishedTime}}</td>
+ </tr>
+ <tr>
+ <td>Elapsed Time</td>
+ <td>{{container.elapsedTime}}</td>
+ </tr>
+ <tr>
+ <td>Priority</td>
+ <td>{{container.priority}}</td>
+ </tr>
+ <tr>
+ <td>Log</td>
+ <td><a href={{container.logUrl}}>link</a></td>
+ </tr>
+ <tr>
+ <td>Exit Status</td>
+ <td>{{container.containerExitStatus}}</td>
+ </tr>
+ <tr>
+ <td>State</td>
+ <td>{{container.containerState}}</td>
+ </tr>
+ <tr>
+ <td>NodeManager UI</td>
+ <td>{{container.nodeHttpAddress}}</td>
+ </tr>
+ </tbody>
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
new file mode 100644
index 0000000..9045976
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
@@ -0,0 +1,58 @@
+{{!
+ * 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.
+}}
+
+<table id="queue-configuration-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <thead>
+ <tr>
+ <td><b>Configurations</b></td>
+ <td>Value</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Queue Name</td>
+ <td>{{queue.id}}</td>
+ </tr>
+ <tr>
+ <td>Configured Capacity</td>
+ <td>{{queue.capacity}}</td>
+ </tr>
+ <tr>
+ <td>Configured Max Capacity</td>
+ <td>{{queue.maxCapacity}}</td>
+ </tr>
+ <tr>
+ <td>State</td>
+ <td>{{queue.state}}</td>
+ </tr>
+ {{#if queue.isLeafQueue}}
+ <tr>
+ <td>User Limit Percent</td>
+ <td>{{queue.userLimit}}</td>
+ </tr>
+ <tr>
+ <td>User Limit Factor</td>
+ <td>{{queue.userLimitFactor}}</td>
+ </tr>
+ <tr>
+ <td>Preemption Disabled</td>
+ <td>{{queue.preemptionDisabled}}</td>
+ </tr>
+ {{/if}}
+ </tbody>
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
new file mode 100644
index 0000000..fb9c6c8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
@@ -0,0 +1,36 @@
+{{!
+ * 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.
+}}
+
+<div class="row">
+ <div class="col-lg-4">
+ <select class="js-example-basic-single" width="100%" id="queue-name-selector">
+ {{item-selector element-id="queue-name-selector" prefix="Queue : " model=model}}
+ </select>
+ </div>
+</div><!-- /.row -->
+
+<!-- queue selector -->
+<div class="row">
+ <div class="col-md-12 container-fluid" id="tree-selector-container">
+ {{tree-selector model=model parentId="tree-selector-container" selected=selected}}
+ </div>
+</div>
+
+<hr>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
new file mode 100644
index 0000000..2eb3441
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
@@ -0,0 +1,53 @@
+{{!
+ * 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.
+}}
+
+<div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ {{#if attemptModel}}
+ Application Attempts
+ {{else}}
+ Containers
+ {{/if}}
+ </div>
+ <div class="panel-body">
+ <div class="col-md-8 container-fluid" id={{parent-id}}>
+ </div>
+
+ <!-- diag info -->
+ <div class="col-md-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ {{#if selected.link}}
+ <a href={{selected.link}}>{{selected.id}}</a>
+ {{else}}
+ {{selected.id}}
+ {{/if}}
+ </div>
+ {{#if attemptModel}}
+ {{app-attempt-table attempt=selected}}
+ {{else}}
+ {{container-table container=selected}}
+ {{/if}}
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/error.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/error.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/error.hbs
new file mode 100644
index 0000000..c546bf7
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/error.hbs
@@ -0,0 +1,19 @@
+{{!--
+ 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.
+--}}
+
+<h3 align = "center">Sorry, Error Occured.</h3>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/notfound.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/notfound.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/notfound.hbs
new file mode 100644
index 0000000..588ea44
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/notfound.hbs
@@ -0,0 +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.
+--}}
+
+<h2 align = "center">404, Not Found</h2>
+<h4 align = "center">Please Check your URL</h4>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
new file mode 100644
index 0000000..a0343b5
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
@@ -0,0 +1,30 @@
+{{!
+ * 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.
+}}
+
+<div class="container-fluid">
+ <div class="row">
+ {{app-attempt-table attempt=model.attempt}}
+ </div>
+
+ <!-- containers table -->
+ <div class="row">
+ {{timeline-view parent-id="containers-timeline-div" my-id="timeline-view" height="400" rmModel=model.rmContainers tsModel=model.tsContainers label="shortAppAttemptId" attemptModel=false}}
+ </div>
+</div>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
new file mode 100644
index 0000000..d306e64
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
@@ -0,0 +1,163 @@
+{{!
+ * 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.
+}}
+
+<div class="container-fluid">
+ <!-- app table -->
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Application Basic Information
+ </div>
+ {{app-table table-id="app-table" app=model.app}}
+ </div>
+ </div>
+ </div>
+
+ <!-- diag info and other infos -->
+ <div class="row">
+ <!-- diag info -->
+ <div class="col-md-4 container-fluid">
+ {{#if model.app.isFailed}}
+ <div class="panel panel-danger">
+ <div class="panel-heading">
+ Diagnostics
+ </div>
+ <div class="panel-body">{{model.app.diagnostics}}</div>
+ </div>
+ {{else}}
+ <div class="panel panel-default">
+ <div class="panel-body">
+ Diagnostics
+ </div>
+ <div class="panel-footer">{{model.app.diagnostics}}</div>
+ </div>
+ {{/if}}
+ </div>
+
+ <div class="col-md-5 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Scheduling Info</div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>Allocated Resource</td>
+ <td>{{model.app.allocatedResource}}</td>
+ </tr>
+ <tr>
+ <td>Running Containers</td>
+ <td>{{model.app.runningContainers}}</td>
+ </tr>
+ <tr>
+ <td>Preempted Resource</td>
+ <td>{{model.app.preemptedResource}}</td>
+ </tr>
+ <tr>
+ <td>Num Non-AM container preempted</td>
+ <td>{{model.app.numAMContainerPreempted}}</td>
+ </tr>
+ <tr>
+ <td>Num AM container preempted</td>
+ <td>{{model.app.numAMContainerPreempted}}</td>
+ </tr>
+ <tr>
+ <td>Aggregated Resource Usage</td>
+ <td>{{model.app.aggregatedResourceUsage}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+
+ <!-- other info -->
+ <div class="col-md-3 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Other Info</div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>AM Container Log</td>
+ <td><a href={{model.app.amContainerLogs}}>Link</a></td>
+ </tr>
+ <tr>
+ <td>AM Host Http Addr</td>
+ <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
+ </tr>
+ <tr>
+ <td>Log Aggregation Status</td>
+ <td>{{model.app.logAggregationStatus}}</td>
+ </tr>
+ <tr>
+ <td>Is Unmanaged AM</td>
+ <td>{{model.app.unmanagedApplication}}</td>
+ </tr>
+ <tr>
+ <td>AM Node Label Expression</td>
+ <td>{{model.app.amNodeLabelExpression}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+
+<!--
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Application Attempts
+ </div>
+ <table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <thead>
+ <tr>
+ <th>Start Time</th>
+ <th>Master ContainerId</th>
+ <th>Node Http Address</th>
+ <th>Node Id</th>
+ <th>Logs Link</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each model.attempts as |attempt|}}
+ <tr>
+ <td>{{attempt.startTime}}</td>
+ <td>{{attempt.containerId}}</td>
+ <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
+ <td>{{attempt.nodeId}}</td>
+ <td><a href={{attempt.logsLink}}>link</a></td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+-->
+ <!-- timeline view of children -->
+ <div class="row">
+ {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
+ </div>
+</div>
+
+<!--
+{{simple-table table-id="app-attempt-table" paging=false bFilter=false}}
+-->
+
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
new file mode 100644
index 0000000..98b9107
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
@@ -0,0 +1,21 @@
+{{!
+ * 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.
+}}
+
+{{app-table table-id="apps-table" arr=model}}
+{{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc" colTypes="natural elapsed-time" colTargets="0 7"}}
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
new file mode 100644
index 0000000..9cc3b0f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
@@ -0,0 +1,36 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ {{node-menu path="yarnContainerLog" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h5 align="center"><b>{{model.containerLog.logFileName}} for {{model.containerLog.containerID}}</b></h5>
+ </div>
+ <div class="panel-body">
+ {{#if model.containerLog.logs}}
+ <pre>{{model.containerLog.logs}}</pre>
+ {{else}}
+ <p>No logs were written in {{model.containerLog.logFileName}}.</p>
+ {{/if}}
+ </div>
+ </div>
+ </div>
+</div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
new file mode 100644
index 0000000..4da64b8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
@@ -0,0 +1,60 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNodeApp" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading"><b>Application Information</b></div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>Application ID</td>
+ <td>{{model.nodeApp.appId}}</td>
+ </tr>
+ <tr>
+ <td>Application State</td>
+ <td>{{model.nodeApp.state}}</td>
+ </tr>
+ <tr>
+ <td>User</td>
+ <td>{{model.nodeApp.user}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <table id="node-app-table" class="display table table-striped table-bordered" cellspacing="0">
+ <thead>
+ <tr>
+ <th>Containers for {{model.nodeApp.appId}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each model.nodeApp.containers as |container|}}
+ <tr>
+ <td><a href="yarnNodeContainer/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container}}">{{container}}</a></td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+ {{simple-table table-id="node-app-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
+ </div>
+ </div>
+ </div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
new file mode 100644
index 0000000..c195397
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
@@ -0,0 +1,51 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNodeApps" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10 container-fluid">
+ <table id="node-apps-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Application ID</th>
+ <th>State</th>
+ <th>User</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if model.apps}}
+ {{#each model.apps as |app|}}
+ {{#if app.isDummyApp}}
+ <tr><td colspan="3" align="center">No apps found on this node</td></tr>
+ {{else}}
+ <tr>
+ <td><a href="yarnNodeApp/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{app.appId}}">{{app.appId}}</a></td>
+ <td><span class={{app.appStateStyle}}>{{app.state}}</span></td>
+ <td>{{app.user}}</td>
+ </tr>
+ {{/if}}
+ {{/each}}
+ {{/if}}
+ </tbody>
+ </table>
+ {{simple-table table-id="node-apps-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
+ </div>
+ </div>
+</div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
new file mode 100644
index 0000000..fbbb2fc
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
@@ -0,0 +1,70 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNodeContainer" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading"><b>Container Information</b></div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>Container ID</td>
+ <td>{{model.nodeContainer.containerId}}</td>
+ </tr>
+ <tr>
+ <td>Container State</td>
+ <td>{{model.nodeContainer.state}}</td>
+ </tr>
+ <tr>
+ <td>Exit Code</td>
+ <td>{{model.nodeContainer.exitCode}}</td>
+ </tr>
+ <tr>
+ <td>Diagnostics</td>
+ <td>{{model.nodeContainer.diagnostics}}</td>
+ </tr>
+ <tr>
+ <td>User</td>
+ <td>{{model.nodeContainer.user}}</td>
+ </tr>
+ <tr>
+ <td>Total Memory Needed</td>
+ <td>{{model.nodeContainer.totalMemoryNeeded}} MB</td>
+ </tr>
+ <tr>
+ <td>Total VCores Needed</td>
+ <td>{{model.nodeContainer.totalVCoresNeeded}}</td>
+ </tr>
+ <tr>
+ <td>Link to Logs</td>
+ <td>
+ {{log-files-comma nodeId=model.nodeInfo.id
+ nodeAddr=model.nodeInfo.addr
+ containerId=model.nodeContainer.containerId
+ logFiles=model.nodeContainer.containerLogFiles}}
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+{{outlet}}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[35/50] [abbrv] hadoop git commit: YARN-5500. [YARN-3368] ‘Master node' link under application tab is broken. (Akhil P B Tan via Sunil G)
Posted by su...@apache.org.
YARN-5500. [YARN-3368] \u2018Master node' link under application tab is broken. (Akhil P B Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f04d40ac
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f04d40ac
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f04d40ac
Branch: refs/heads/YARN-3368
Commit: f04d40ac20b42aa7dba1c29214f8f5b08b4c924f
Parents: 6ec6a01
Author: sunilg <su...@apache.org>
Authored: Thu Oct 27 14:19:44 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../src/main/webapp/app/controllers/yarn-app.js | 9 ++++++++-
.../src/main/webapp/app/templates/yarn-app.hbs | 4 ++--
2 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f04d40ac/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
index f6b9404..309c895 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
@@ -33,6 +33,13 @@ export default Ember.Controller.extend({
routeName: 'yarn-app',
model: appId
}];
- })
+ }),
+ amHostHttpAddressFormatted: function() {
+ var amHostAddress = this.get('model.app.amHostHttpAddress');
+ if (amHostAddress.indexOf('http://') < 0) {
+ amHostAddress = 'http://' + amHostAddress;
+ }
+ return amHostAddress;
+ }.property('model.app.amHostHttpAddress')
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f04d40ac/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
index 9e92fc1..acf00d1 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
@@ -172,8 +172,8 @@
<tbody>
<tr>
- <td><a href={{model.app.amContainerLogs}}>Link</a></td>
- <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
+ <td><a href={{model.app.amContainerLogs}} target="_blank">Link</a></td>
+ <td><a href={{amHostHttpAddressFormatted}} target="_blank">Link</a></td>
<td>{{model.app.amNodeLabelExpression}}</td>
</tr>
</tbody>
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[50/50] [abbrv] hadoop git commit: YARN-4849. Addendum patch to fix
license. (Wangda Tan via Sunil G)
Posted by su...@apache.org.
YARN-4849. Addendum patch to fix license. (Wangda Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a2a32d78
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a2a32d78
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a2a32d78
Branch: refs/heads/YARN-3368
Commit: a2a32d783357a3c84e63c406ec77840d9de9c332
Parents: 2a6c1b5
Author: sunilg <su...@apache.org>
Authored: Wed Aug 24 16:28:34 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
LICENSE.txt | 84 ++++++++++++++++++++++++++++++++++----------------------
1 file changed, 51 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a2a32d78/LICENSE.txt
----------------------------------------------------------------------
diff --git a/LICENSE.txt b/LICENSE.txt
index 8f418af..04d2daa 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -2315,35 +2315,53 @@ jamon-runtime 2.3.1
Your choice of the MPL or the alternative licenses, if any, specified
by the Initial Developer in the file described in Exhibit A.
-For Apache Hadoop YARN Web UI component: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/
----------------------------------------------------------------------
-The Apache Hadoop YARN Web UI component bundles the following files under the MIT License:
-
- - ember v2.2.0 (http://emberjs.com/) - Copyright (c) 2014 Yehuda Katz, Tom Dale and Ember.js contributors
- - ember-data v2.1.0 (https://github.com/emberjs/data) - Copyright (C) 2011-2014 Tilde, Inc. and contributors, Portions Copyright (C) 2011 LivingSocial Inc.
- - ember-resolver v2.0.3 (https://github.com/ember-cli/ember-resolver) - Copyright (c) 2013 Stefan Penner and Ember App Kit Contributors
- - bootstrap v3.3.6 (http://getbootstrap.com) - Copyright (c) 2011-2014 Twitter, Inc
- - jquery v2.1.4 (http://jquery.org) - Copyright 2005, 2014 jQuery Foundation and other contributors
- - jquery-ui v1.11.4 (http://jqueryui.com/) - Copyright 2014 jQuery Foundation and other contributors
- - datatables v1.10.8 (https://datatables.net/)
- - moment v2.10.6 (http://momentjs.com/) - Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors
- - em-helpers v0.5.8 (https://github.com/sreenaths/em-helpers)
- - ember-array-contains-helper v1.0.2 (https://github.com/bmeurant/ember-array-contains-helper)
- - ember-cli-app-version v0.5.8 (https://github.com/EmberSherpa/ember-cli-app-version) - Authored by Taras Mankovski <ta...@gmail.com>
- - ember-cli-babel v5.1.6 (https://github.com/babel/ember-cli-babel) - Authored by Stefan Penner <st...@gmail.com>
- - ember-cli-content-security-policy v0.4.0 (https://github.com/rwjblue/ember-cli-content-security-policy)
- - ember-cli-dependency-checker v1.2.0 (https://github.com/quaertym/ember-cli-dependency-checker) - Authored by Emre Unal
- - ember-cli-htmlbars v1.0.2 (https://github.com/ember-cli/ember-cli-htmlbars) - Authored by Robert Jackson <me...@rwjblue.com>
- - ember-cli-htmlbars-inline-precompile v0.3.1 (https://github.com/pangratz/ember-cli-htmlbars-inline-precompile) - Authored by Clemens M�ller <cm...@gmail.com>
- - ember-cli-ic-ajax v0.2.1 (https://github.com/rwjblue/ember-cli-ic-ajax) - Authored by Robert Jackson <me...@rwjblue.com>
- - ember-cli-inject-live-reload v1.4.0 (https://github.com/rwjblue/ember-cli-inject-live-reload) - Authored by Robert Jackson <me...@rwjblue.com>
- - ember-cli-qunit v1.2.1 (https://github.com/ember-cli/ember-cli-qunit) - Authored by Robert Jackson <me...@rwjblue.com>
- - ember-cli-release v0.2.8 (https://github.com/lytics/ember-cli-release) - Authored by Robert Jackson <me...@rwjblue.com>
- - ember-cli-sri v1.2.1 (https://github.com/jonathanKingston/ember-cli-sri) - Authored by Jonathan Kingston
- - ember-cli-uglify v1.2.0 (github.com/ember-cli/ember-cli-uglify) - Authored by Robert Jackson <me...@rwjblue.com>
- - ember-d3 v0.1.0 (https://github.com/brzpegasus/ember-d3) - Authored by Estelle DeBlois
- - ember-truth-helpers v1.2.0 (https://github.com/jmurphyau/ember-truth-helpers)
- - select2 v4.0.0 (https://select2.github.io/)
+The binary distribution of this product bundles these dependencies under the
+following license:
+bootstrap v3.3.6
+broccoli-asset-rev v2.4.2
+broccoli-funnel v1.0.1
+datatables v1.10.8
+em-helpers v0.5.13
+em-table v0.1.6
+ember v2.2.0
+ember-array-contains-helper v1.0.2
+ember-bootstrap v0.5.1
+ember-cli v1.13.13
+ember-cli-app-version v1.0.0
+ember-cli-babel v5.1.6
+ember-cli-content-security-policy v0.4.0
+ember-cli-dependency-checker v1.2.0
+ember-cli-htmlbars v1.0.2
+ember-cli-htmlbars-inline-precompile v0.3.1
+ember-cli-ic-ajax v0.2.1
+ember-cli-inject-live-reload v1.4.0
+ember-cli-jquery-ui v0.0.20
+ember-cli-qunit v1.2.1
+ember-cli-release v0.2.8
+ember-cli-shims v0.0.6
+ember-cli-sri v1.2.1
+ember-cli-test-loader v0.2.1
+ember-cli-uglify v1.2.0
+ember-d3 v0.1.0
+ember-data v2.1.0
+ember-disable-proxy-controllers v1.0.1
+ember-export-application-global v1.0.5
+ember-load-initializers v0.1.7
+ember-qunit v0.4.16
+ember-qunit-notifications v0.1.0
+ember-resolver v2.0.3
+ember-spin-spinner v0.2.3
+ember-truth-helpers v1.2.0
+jquery v2.1.4
+jquery-ui v1.11.4
+loader.js v3.3.0
+momentjs v2.10.6
+qunit v1.19.0
+select2 v4.0.0
+snippet-ss v1.11.0
+spin.js v2.3.2
+-------------------------------------------------------------------------------
+The MIT License (MIT)
All rights reserved.
@@ -2364,12 +2382,12 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
-The Apache Hadoop YARN Web UI component bundles the following files under the BSD License:
+The binary distribution of this product bundles these dependencies under the
+following license:
+D3 v3.5.6
+--------------------------------------------------------------------------------
(3-clause BSD license)
- - D3 v3.5.6 (http://d3js.org/) - Copyright (c) 2010-2014, Michael Bostock
-
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[49/50] [abbrv] hadoop git commit: YARN-3334. [YARN-3368] Introduce
REFRESH button in various UI pages (Sreenath Somarajapuram via Sunil G)
Posted by su...@apache.org.
YARN-3334. [YARN-3368] Introduce REFRESH button in various UI pages (Sreenath Somarajapuram via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2a0bf149
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2a0bf149
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2a0bf149
Branch: refs/heads/YARN-3368
Commit: 2a0bf1497877c46185a5dcf597e98388720c4454
Parents: 52661fe
Author: sunilg <su...@apache.org>
Authored: Wed Aug 10 06:53:13 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../app/components/app-usage-donut-chart.js | 5 ---
.../src/main/webapp/app/components/bar-chart.js | 4 +-
.../webapp/app/components/breadcrumb-bar.js | 31 ++++++++++++++
.../main/webapp/app/components/donut-chart.js | 8 ++--
.../app/components/queue-usage-donut-chart.js | 2 +-
.../app/controllers/yarn-container-log.js | 40 ++++++++++++++++++
.../webapp/app/controllers/yarn-node-app.js | 36 ++++++++++++++++
.../src/main/webapp/app/routes/abstract.js | 32 +++++++++++++++
.../main/webapp/app/routes/cluster-overview.js | 12 +++++-
.../main/webapp/app/routes/yarn-app-attempt.js | 9 +++-
.../main/webapp/app/routes/yarn-app-attempts.js | 8 +++-
.../src/main/webapp/app/routes/yarn-app.js | 11 ++++-
.../src/main/webapp/app/routes/yarn-apps.js | 9 +++-
.../webapp/app/routes/yarn-container-log.js | 10 ++++-
.../src/main/webapp/app/routes/yarn-node-app.js | 8 +++-
.../main/webapp/app/routes/yarn-node-apps.js | 8 +++-
.../webapp/app/routes/yarn-node-container.js | 8 +++-
.../webapp/app/routes/yarn-node-containers.js | 8 +++-
.../src/main/webapp/app/routes/yarn-node.js | 9 +++-
.../src/main/webapp/app/routes/yarn-nodes.js | 9 +++-
.../main/webapp/app/routes/yarn-queue-apps.js | 12 ++++--
.../src/main/webapp/app/routes/yarn-queue.js | 14 ++++---
.../src/main/webapp/app/routes/yarn-queues.js | 14 ++++---
.../src/main/webapp/app/styles/app.css | 6 +++
.../webapp/app/templates/cluster-overview.hbs | 4 +-
.../app/templates/components/breadcrumb-bar.hbs | 22 ++++++++++
.../webapp/app/templates/yarn-app-attempt.hbs | 4 +-
.../webapp/app/templates/yarn-app-attempts.hbs | 4 +-
.../src/main/webapp/app/templates/yarn-app.hbs | 4 +-
.../src/main/webapp/app/templates/yarn-apps.hbs | 4 +-
.../webapp/app/templates/yarn-container-log.hbs | 2 +
.../main/webapp/app/templates/yarn-node-app.hbs | 2 +
.../webapp/app/templates/yarn-node-apps.hbs | 4 +-
.../app/templates/yarn-node-container.hbs | 4 +-
.../app/templates/yarn-node-containers.hbs | 4 +-
.../src/main/webapp/app/templates/yarn-node.hbs | 4 +-
.../main/webapp/app/templates/yarn-nodes.hbs | 4 +-
.../webapp/app/templates/yarn-queue-apps.hbs | 4 +-
.../main/webapp/app/templates/yarn-queue.hbs | 4 +-
.../main/webapp/app/templates/yarn-queues.hbs | 4 +-
.../components/breadcrumb-bar-test.js | 43 ++++++++++++++++++++
.../unit/controllers/yarn-container-log-test.js | 30 ++++++++++++++
.../unit/controllers/yarn-node-app-test.js | 30 ++++++++++++++
43 files changed, 417 insertions(+), 77 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-usage-donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-usage-donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-usage-donut-chart.js
index 0baf630..90f41fc 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-usage-donut-chart.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-usage-donut-chart.js
@@ -26,7 +26,6 @@ export default BaseUsageDonutChart.extend({
colors: d3.scale.category20().range(),
draw: function() {
- this.initChart();
var usageByApps = [];
var avail = 100;
@@ -60,8 +59,4 @@ export default BaseUsageDonutChart.extend({
this.renderDonutChart(usageByApps, this.get("title"), this.get("showLabels"),
this.get("middleLabel"), "100%", "%");
},
-
- didInsertElement: function() {
- this.draw();
- },
})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
index 7bb292f..a5c49a9 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
@@ -112,16 +112,16 @@ export default BaseChartComponent.extend({
},
draw: function() {
- this.initChart();
this.renderBarChart(this.get("data"), this.get("title"), this.get("textWidth"));
},
_dataChange: Ember.observer("data", function() {
this.chart.g.selectAll("*").remove();
- this.renderBarChart(this.get("data"), this.get("title"), this.get("textWidth"));
+ this.draw();
}),
didInsertElement: function() {
+ this.initChart();
this.draw();
},
})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/breadcrumb-bar.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/breadcrumb-bar.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/breadcrumb-bar.js
new file mode 100644
index 0000000..44edb8e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/breadcrumb-bar.js
@@ -0,0 +1,31 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+
+ breadcrumbs: null,
+
+ actions:{
+ refresh: function () {
+ this.get("targetObject").send("refresh");
+ }
+ }
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
index 9a90855..a2a21b3 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
@@ -169,13 +169,12 @@ export default BaseChartComponent.extend({
_dataChange: Ember.observer("data", function() {
this.chart.g.selectAll("*").remove();
- this.renderDonutChart(this.get("data"), this.get("title"), this.get("showLabels"),
- this.get("middleLabel"), this.get("middleValue"));
+ if(this.get("data")) {
+ this.draw();
+ }
}),
draw: function() {
- this.initChart();
-
var colorTargets = this.get("colorTargets");
if (colorTargets) {
var colorTargetReverse = Boolean(this.get("colorTargetReverse"));
@@ -188,6 +187,7 @@ export default BaseChartComponent.extend({
},
didInsertElement: function() {
+ this.initChart();
this.draw();
},
})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js
index 3532726..f5e7574 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js
@@ -26,7 +26,6 @@ export default BaseUsageDonutChart.extend({
colors: d3.scale.category20().range(),
draw: function() {
- this.initChart();
var usageByQueues = [];
var avail = 100;
@@ -64,6 +63,7 @@ export default BaseUsageDonutChart.extend({
},
didInsertElement: function() {
+ this.initChart();
this.draw();
},
})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-container-log.js
new file mode 100644
index 0000000..3352eaf
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-container-log.js
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+ breadcrumbs: Ember.computed('model.nodeInfo', 'model.containerInfo', function () {
+ var nodeInfo = this.get('model.nodeInfo'),
+ containerInfo = this.get('model.containerInfo');
+ return [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: `Node [ ${nodeInfo.id} ]`,
+ href: `/#/yarn-node/${nodeInfo.id}/${nodeInfo.addr}`,
+ }, {
+ text: `Container [ ${containerInfo.id} ]`,
+ href: `/#/yarn-node-container/${nodeInfo.id}/${nodeInfo.addr}/${containerInfo.id}`,
+ }, {
+ text: "Log",
+ }];
+ })
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-app.js
new file mode 100644
index 0000000..76da281
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-app.js
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+ breadcrumbs: Ember.computed('model.nodeInfo', function () {
+ var nodeInfo = this.get('model.nodeInfo');
+ return [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: `Node [ ${nodeInfo.id} ]`,
+ href: `/#/yarn-node/${nodeInfo.id}/${nodeInfo.addr}`,
+ }, {
+ text: "Application",
+ }];
+ })
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/abstract.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/abstract.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/abstract.js
new file mode 100644
index 0000000..3163237
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/abstract.js
@@ -0,0 +1,32 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ unloadAll() {
+ // Must be implemented by inheriting classes
+ },
+
+ actions: {
+ refresh: function () {
+ this.unloadAll();
+ this.refresh();
+ }
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
index 3689274..1068126 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
@@ -18,7 +18,9 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model() {
return Ember.RSVP.hash({
clusterMetrics: this.store.findAll('ClusterMetric'),
@@ -26,11 +28,17 @@ export default Ember.Route.extend({
{
state: "RUNNING"
}),
- queues: this.store.findAll('yarn-queue'),
+ queues: this.store.query('yarn-queue', {}),
});
},
afterModel() {
this.controllerFor("ClusterOverview").set("loading", false);
+ },
+
+ unloadAll() {
+ this.store.unloadAll('ClusterMetric');
+ this.store.unloadAll('yarn-app');
+ this.store.unloadAll('yarn-queue');
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
index a8f27f5..762fb29 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
@@ -18,7 +18,9 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
return Ember.RSVP.hash({
attempt: this.store.findRecord('yarn-app-attempt', param.app_attempt_id),
@@ -39,5 +41,10 @@ export default Ember.Route.extend({
return [];
})
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-app-attempt');
+ this.store.unloadAll('yarn-container');
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js
index 1a526c7..121debf 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js
@@ -18,7 +18,9 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
return this.store.query('yarn-app-attempt', { appId: param.app_id}).then(function (attempts) {
return {
@@ -26,5 +28,9 @@ export default Ember.Route.extend({
attempts: attempts
};
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-app-attempt');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
index ab84632..000b02f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
@@ -18,7 +18,9 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
return Ember.RSVP.hash({
app: this.store.find('yarn-app', param.app_id),
@@ -39,5 +41,12 @@ export default Ember.Route.extend({
nodes: this.store.findAll('yarn-rm-node'),
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-app');
+ this.store.unloadAll('yarn-app-attempt');
+ this.store.unloadAll('yarn-container');
+ this.store.unloadAll('yarn-rm-node');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
index b945451..0ac503c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
@@ -18,11 +18,18 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model() {
return Ember.RSVP.hash({
apps: this.store.findAll('yarn-app'),
clusterMetrics: this.store.findAll('ClusterMetric'),
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-app');
+ this.store.unloadAll('ClusterMetric');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
index e2c9922..9e4c7d3 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
@@ -19,12 +19,15 @@
import Ember from 'ember';
import Constants from 'yarn-ui/constants';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
var id = param.node_addr + Constants.PARAM_SEPARATOR + param.container_id +
Constants.PARAM_SEPARATOR + param.filename;
return Ember.RSVP.hash({
containerLog: this.store.findRecord('yarn-container-log', id),
+ containerInfo: { id: param.container_id },
nodeInfo: { id: param.node_id, addr: param.node_addr }
}).then(function(hash) {
// Just return as its success.
@@ -36,6 +39,7 @@ export default Ember.Route.extend({
} else {
// Assume empty response received from server.
return { nodeInfo: { id: param.node_id, addr: param.node_addr },
+ containerInfo: { id: param.container_id },
containerLog: { logs: "", containerID: param.container_id,
logFileName: param.filename}};
}
@@ -51,5 +55,9 @@ export default Ember.Route.extend({
this.replaceWith('/error');
}
}
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-container-log');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
index ed3058a..0a11930 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
@@ -18,12 +18,18 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
return Ember.RSVP.hash({
nodeApp: this.store.queryRecord('yarn-node-app',
{ nodeAddr : param.node_addr, appId: param.app_id }),
nodeInfo: { id: param.node_id, addr: param.node_addr }
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-node-app');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
index 4377a0d..6044076 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
@@ -18,12 +18,18 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
// Get all apps running on a specific node. Node is contacted by using node_addr.
return Ember.RSVP.hash({
apps: this.store.query('yarn-node-app', { nodeAddr: param.node_addr }),
nodeInfo: { id: param.node_id, addr: param.node_addr }
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-node-app');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
index 4ee3c66..b7a79de 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
@@ -18,7 +18,9 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
// Get a specific container running on a specific node.
return Ember.RSVP.hash({
@@ -26,5 +28,9 @@ export default Ember.Route.extend({
{ nodeHttpAddr: param.node_addr, containerId: param.container_id }),
nodeInfo: { id: param.node_id, addr: param.node_addr }
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-node-container');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
index 283296e..3c709f7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
@@ -17,12 +17,18 @@
*/
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
// Get all containers running on specific node.
return Ember.RSVP.hash({
containers: this.store.query('yarn-node-container', { nodeHttpAddr: param.node_addr }),
nodeInfo: { id: param.node_id, addr: param.node_addr }
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-node-container');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
index 64a1b3e..967d007 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
@@ -18,7 +18,9 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
// Fetches data from both NM and RM. RM is queried to get node usage info.
return Ember.RSVP.hash({
@@ -26,5 +28,10 @@ export default Ember.Route.extend({
node: this.store.findRecord('yarn-node', param.node_addr),
rmNode: this.store.findRecord('yarn-rm-node', param.node_id)
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-node');
+ this.store.unloadAll('yarn-rm-node');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
index 5639369..4439569 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
@@ -18,11 +18,18 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model() {
return Ember.RSVP.hash({
nodes: this.store.findAll('yarn-rm-node'),
clusterMetrics: this.store.findAll('ClusterMetric'),
});
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-rm-node');
+ this.store.unloadAll('ClusterMetric');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
index dff4ee9..373e1be 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
@@ -18,7 +18,9 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
return Ember.RSVP.hash({
selected : param.queue_name,
@@ -29,8 +31,12 @@ export default Ember.Route.extend({
},
afterModel(model) {
- var store = this.store;
model.selectedQueue = this.store.peekRecord('yarn-queue', model.selected);
- model.apps = store.findAll('yarn-app');
+ model.apps = this.store.findAll('yarn-app');
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-queue');
+ this.store.unloadAll('yarn-app');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
index 06ceafb..5342913 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
@@ -18,11 +18,13 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
return Ember.RSVP.hash({
selected : param.queue_name,
- queues: this.store.findAll('yarn-queue'),
+ queues: this.store.query('yarn-queue', {}),
selectedQueue : undefined,
apps: undefined, // apps of selected queue
});
@@ -31,8 +33,10 @@ export default Ember.Route.extend({
afterModel(model) {
model.selectedQueue = this.store.peekRecord('yarn-queue', model.selected);
model.apps = this.store.findAll('yarn-app');
- model.apps.forEach(function(o) {
- console.log(o);
- })
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-queue');
+ this.store.unloadAll('yarn-app');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
index 06ceafb..5342913 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
@@ -18,11 +18,13 @@
import Ember from 'ember';
-export default Ember.Route.extend({
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
model(param) {
return Ember.RSVP.hash({
selected : param.queue_name,
- queues: this.store.findAll('yarn-queue'),
+ queues: this.store.query('yarn-queue', {}),
selectedQueue : undefined,
apps: undefined, // apps of selected queue
});
@@ -31,8 +33,10 @@ export default Ember.Route.extend({
afterModel(model) {
model.selectedQueue = this.store.peekRecord('yarn-queue', model.selected);
model.apps = this.store.findAll('yarn-app');
- model.apps.forEach(function(o) {
- console.log(o);
- })
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-queue');
+ this.store.unloadAll('yarn-app');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
index 409aa15..a68a0ac 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
@@ -267,3 +267,9 @@ li a.navigation-link.ember-view {
color: #2196f3;
font-weight: bold;
}
+
+.breadcrumb-bar .refresh {
+ position: absolute;
+ right: 20px;
+ top: 3px;
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
index fa90799..3bf0f37 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
@@ -16,9 +16,7 @@
* limitations under the License.
}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
{{#if model}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/breadcrumb-bar.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/breadcrumb-bar.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/breadcrumb-bar.hbs
new file mode 100644
index 0000000..24acbd9
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/breadcrumb-bar.hbs
@@ -0,0 +1,22 @@
+{{!
+ * 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.
+}}
+
+<div class="col-md-12 container-fluid breadcrumb-bar">
+ {{em-breadcrumbs items=breadcrumbs}}
+ <button type="button" class="btn btn-sm btn-primary refresh" {{action "refresh"}}>Refresh</button>
+</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
index c30040b..1dbae9a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
@@ -16,9 +16,7 @@
* limitations under the License.
}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<br/><br/><br/>
<div class="container-fluid">
<div class="row">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
index ffaa60d..c0fa7e1 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
@@ -16,9 +16,7 @@
* limitations under the License.
}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="col-md-12 container-fluid">
<div class="row">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
index 4db4f8a..49c4bfd 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
@@ -16,9 +16,7 @@
* limitations under the License.
}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
{{#if model.app}}
<div class="col-md-12 container-fluid">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
index ec17379..d5f6347 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
@@ -16,9 +16,7 @@
* limitations under the License.
}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="col-md-12 container-fluid">
<div class="row">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
index e9c3fed..67629d2 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
@@ -16,6 +16,8 @@
limitations under the License.
--}}
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
+
<div class="col-md-12 container-fluid">
{{node-menu path="yarn-container-log" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
index 1551957..99d99cc 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
@@ -16,6 +16,8 @@
limitations under the License.
--}}
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
+
<div class="col-md-12 container-fluid">
<div class="row">
{{node-menu-panel path="yarn-node-app" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
index 832e452..52f0c86 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
@@ -16,9 +16,7 @@
limitations under the License.
--}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="col-md-12 container-fluid">
<div class="row">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
index 224c695..45abee8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
@@ -16,9 +16,7 @@
limitations under the License.
--}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="col-md-12 container-fluid">
<div class="row">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
index e96c83f..f520c46 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
@@ -16,9 +16,7 @@
limitations under the License.
--}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="col-md-12 container-fluid">
<div class="row">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
index ddec5c4..2d6b3a3 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
@@ -16,9 +16,7 @@
limitations under the License.
--}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="col-md-12 container-fluid">
<div class="row">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
index ffab3e9..ed5522e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
@@ -16,9 +16,7 @@
limitations under the License.
--}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="row">
<div class="col-md-2 container-fluid">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
index 7cfd4c6..d5329f2 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
@@ -16,9 +16,7 @@
* limitations under the License.
}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="col-md-12 container-fluid">
<div class="row">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
index aae4177..11c527c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
@@ -16,9 +16,7 @@
* limitations under the License.
}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="col-md-12 container-fluid">
<div class="row">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queues.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queues.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queues.hbs
index e27341b..ea9338c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queues.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queues.hbs
@@ -16,9 +16,7 @@
* limitations under the License.
}}
-<div class="col-md-12 container-fluid">
- {{em-breadcrumbs items=breadcrumbs}}
-</div>
+{{breadcrumb-bar breadcrumbs=breadcrumbs}}
<div class="container-fluid">
{{queue-navigator model=model.queues selected=model.selected}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/integration/components/breadcrumb-bar-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/integration/components/breadcrumb-bar-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/integration/components/breadcrumb-bar-test.js
new file mode 100644
index 0000000..ffc6515
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/integration/components/breadcrumb-bar-test.js
@@ -0,0 +1,43 @@
+/**
+ * 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.
+ */
+
+import { moduleForComponent, test } from 'ember-qunit';
+import hbs from 'htmlbars-inline-precompile';
+
+moduleForComponent('breadcrumb-bar', 'Integration | Component | breadcrumb bar', {
+ integration: true
+});
+
+test('it renders', function(assert) {
+
+ // Set any properties with this.set('myProperty', 'value');
+ // Handle any actions with this.on('myAction', function(val) { ... });" + EOL + EOL +
+
+ this.render(hbs`{{breadcrumb-bar}}`);
+
+ assert.equal(this.$().text().trim(), '');
+
+ // Template block usage:" + EOL +
+ this.render(hbs`
+ {{#breadcrumb-bar}}
+ template block text
+ {{/breadcrumb-bar}}
+ `);
+
+ assert.equal(this.$().text().trim(), 'template block text');
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-container-log-test.js
new file mode 100644
index 0000000..0f8dc03
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-container-log-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-container-log', 'Unit | Controller | yarn container log', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2a0bf149/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-app-test.js
new file mode 100644
index 0000000..852efef
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-app-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-node-app', 'Unit | Controller | yarn node app', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[17/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup
code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
new file mode 100644
index 0000000..ca80ccd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
@@ -0,0 +1,58 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNodeContainers" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ <div class="col-md-10 container-fluid">
+ <table id="node-containers-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Container ID</th>
+ <th>Container State</th>
+ <th>User</th>
+ <th>Logs</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if model.containers}}
+ {{#each model.containers as |container|}}
+ {{#if container.isDummyContainer}}
+ <tr><td colspan="4" align="center">No containers found on this node</td></tr>
+ {{else}}
+ <tr>
+ <td><a href="yarnNodeContainer/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container.containerId}}">{{container.containerId}}</a></td>
+ <td><span class={{container.containerStateStyle}}>{{container.state}}</span></td>
+ <td>{{container.user}}</td>
+ <td>
+ {{log-files-comma nodeId=model.nodeInfo.id
+ nodeAddr=model.nodeInfo.addr
+ containerId=container.containerId
+ logFiles=container.containerLogFiles}}
+ </td>
+ </tr>
+ {{/if}}
+ {{/each}}
+ {{/if}}
+ </tbody>
+ </table>
+ {{simple-table table-id="node-containers-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
+ </div>
+ </div>
+</div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
new file mode 100644
index 0000000..a036076
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
@@ -0,0 +1,94 @@
+{{!--
+ 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.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+ {{node-menu path="yarnNode" nodeId=model.rmNode.id nodeAddr=model.node.id}}
+ <div class="col-md-10 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Node Information</div>
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>Total Vmem allocated for Containers</td>
+ <td>{{divide num=model.node.totalVmemAllocatedContainersMB den=1024}} GB</td>
+ </tr>
+ <tr>
+ <td>Vmem enforcement enabled</td>
+ <td>{{model.node.vmemCheckEnabled}}</td>
+ </tr>
+ <tr>
+ <td>Total Pmem allocated for Containers</td>
+ <td>{{divide num=model.node.totalPmemAllocatedContainersMB den=1024}} GB</td>
+ </tr>
+ <tr>
+ <td>Pmem enforcement enabled</td>
+ <td>{{model.node.pmemCheckEnabled}}</td>
+ </tr>
+ <tr>
+ <td>Total VCores allocated for Containers</td>
+ <td>{{model.node.totalVCoresAllocatedContainers}}</td>
+ </tr>
+ <tr>
+ <td>Node Healthy Status</td>
+ <td>{{model.node.nodeHealthy}}</td>
+ </tr>
+ <tr>
+ <td>Last Node Health Report Time</td>
+ <td>{{model.node.lastNodeUpdateTime}}</td>
+ </tr>
+ <tr>
+ <td>Node Health Report</td>
+ <td>{{model.node.healthReport}}</td>
+ </tr>
+ <tr>
+ <td>Node Manager Start Time</td>
+ <td>{{model.node.nmStartupTime}}</td>
+ </tr>
+ <tr>
+ <td>Node Manager Version</td>
+ <td>{{model.node.nodeManagerBuildVersion}}</td>
+ </tr>
+ <tr>
+ <td>Hadoop Version</td>
+ <td>{{model.node.hadoopBuildVersion}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="col-lg-4 container-fluid" id="mem-donut-chart">
+ {{donut-chart data=model.rmNode.getMemoryDataForDonutChart
+ title="Resource - Memory (in MB)"
+ showLabels=true
+ parentId="mem-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+
+ <div class="col-lg-4 container-fluid" id="vcore-donut-chart">
+ {{donut-chart data=model.rmNode.getVCoreDataForDonutChart
+ title="Resource - VCores"
+ showLabels=true
+ parentId="vcore-donut-chart"
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
+</div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
new file mode 100644
index 0000000..bf2a098
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
@@ -0,0 +1,65 @@
+{{!--
+ 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.
+--}}
+
+<table id="nodes-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Node Labels</th>
+ <th>Rack</th>
+ <th>Node State</th>
+ <th>Node Address</th>
+ <th>Node HTTP Address</th>
+ <th>Last Health Update</th>
+ <th>Health-Report</th>
+ <th>Containers</th>
+ <th>Mem Used</th>
+ <th>Mem Avail</th>
+ <th>VCores Used</th>
+ <th>VCores Avail</th>
+ <th>Version</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#if model}}
+ {{#each model as |node|}}
+ {{#if node.isDummyNode}}
+ <tr><td colspan="13" align="center">No nodes found on this cluster</td></tr>
+ {{else}}
+ <tr>
+ <td>{{node.nodeLabelsAsString}}</td>
+ <td>{{node.rack}}</td>
+ <td><span class={{node.nodeStateStyle}}>{{node.state}}</span></td>
+ <td>{{node.id}}</td>
+ {{node-link nodeId=node.id nodeHTTPAddress=node.nodeHTTPAddress nodeState=node.state}}
+ <td>{{node.lastHealthUpdate}}</td>
+ <td>{{node.healthReport}}</td>
+ <td>{{node.numContainers}}</td>
+ <td>{{divide num=node.usedMemoryMB den=1024}} GB</td>
+ <td>{{divide num=node.availMemoryMB den=1024}} GB</td>
+ <td>{{node.usedVirtualCores}}</td>
+ <td>{{node.availableVirtualCores}}</td>
+ <td>{{node.version}}</td>
+ </tr>
+ {{/if}}
+ {{/each}}
+ {{/if}}
+ </tbody>
+</table>
+
+{{simple-table table-id="nodes-table" bFilter=true}}
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
new file mode 100644
index 0000000..51a4fb4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
@@ -0,0 +1,66 @@
+{{!
+ * 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.
+}}
+
+<div class="container-fluid">
+ {{queue-navigator model=model.queues selected=model.selected}}
+</div>
+
+<div class="row">
+ <div class="col-lg-3 container-fluid">
+ {{queue-configuration-table queue=model.selectedQueue}}
+ </div>
+
+ <div class="col-lg-3 container-fluid" id="capacity-bar-chart">
+ {{bar-chart data=model.selectedQueue.capacitiesBarChartData
+ title="Queue Capacities"
+ parentId="capacity-bar-chart"
+ textWidth=150
+ ratio=0.5
+ maxHeight=350}}
+ </div>
+
+{{#if model.selectedQueue.hasUserUsages}}
+ <div class="col-lg-3 container-fluid" id="userusage-donut-chart">
+ {{donut-chart data=model.selectedQueue.userUsagesDonutChartData
+ title="User Usages"
+ showLabels=true
+ parentId="userusage-donut-chart"
+ maxHeight=350}}
+ </div>
+{{/if}}
+
+ <div class="col-lg-3 container-fluid" id="numapplications-donut-chart">
+ {{donut-chart data=model.selectedQueue.numOfApplicationsDonutChartData
+ title="Running Apps"
+ showLabels=true
+ parentId="numapplications-donut-chart"
+ ratio=0.5
+ maxHeight=350}}
+ </div>
+</div>
+
+<hr>
+
+<div class="row">
+ <div class="col-md-12 container-fluid">
+ {{app-table table-id="apps-table" arr=model.apps}}
+ {{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
+ </div>
+</div>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
new file mode 100644
index 0000000..fd8f491
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
@@ -0,0 +1,109 @@
+/**
+ * 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.
+ */
+
+import Constants from 'yarn-ui/constants';
+
+export default {
+ containerIdToAttemptId: function(containerId) {
+ if (containerId) {
+ var arr = containerId.split('_');
+ var attemptId = ["appattempt", arr[1],
+ arr[2], this.padding(arr[3], 6)];
+ return attemptId.join('_');
+ }
+ },
+ attemptIdToAppId: function(attemptId) {
+ if (attemptId) {
+ var arr = attemptId.split('_');
+ var appId = ["application", arr[1],
+ arr[2]].join('_');
+ return appId;
+ }
+ },
+ padding: function(str, toLen=2) {
+ str = str.toString();
+ if (str.length >= toLen) {
+ return str;
+ }
+ return '0'.repeat(toLen - str.length) + str;
+ },
+ resourceToString: function(mem, cpu) {
+ mem = Math.max(0, mem);
+ cpu = Math.max(0, cpu);
+ return mem + " MBs, " + cpu + " VCores";
+ },
+ msToElapsedTime: function(timeInMs) {
+ var sec_num = timeInMs / 1000; // don't forget the second param
+ var hours = Math.floor(sec_num / 3600);
+ var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
+ var seconds = sec_num - (hours * 3600) - (minutes * 60);
+
+ var timeStrArr = [];
+
+ if (hours > 0) {
+ timeStrArr.push(hours + ' Hrs');
+ }
+ if (minutes > 0) {
+ timeStrArr.push(minutes + ' Mins');
+ }
+ if (seconds > 0) {
+ timeStrArr.push(Math.round(seconds) + " Secs");
+ }
+ return timeStrArr.join(' : ');
+ },
+ elapsedTimeToMs: function(elapsedTime) {
+ elapsedTime = elapsedTime.toLowerCase();
+ var arr = elapsedTime.split(' : ');
+ var total = 0;
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i].indexOf('hr') > 0) {
+ total += parseInt(arr[i].substring(0, arr[i].indexOf(' '))) * 3600;
+ } else if (arr[i].indexOf('min') > 0) {
+ total += parseInt(arr[i].substring(0, arr[i].indexOf(' '))) * 60;
+ } else if (arr[i].indexOf('sec') > 0) {
+ total += parseInt(arr[i].substring(0, arr[i].indexOf(' ')));
+ }
+ }
+ return total * 1000;
+ },
+ timeStampToDate: function(timeStamp) {
+ var dateTimeString = moment(parseInt(timeStamp)).format("YYYY/MM/DD HH:mm:ss");
+ return dateTimeString;
+ },
+ dateToTimeStamp: function(date) {
+ if (date) {
+ var ts = moment(date, "YYYY/MM/DD HH:mm:ss").valueOf();
+ return ts;
+ }
+ },
+ splitForContainerLogs: function(id) {
+ if (id) {
+ var splits = id.split(Constants.PARAM_SEPARATOR);
+ var splitLen = splits.length;
+ if (splitLen < 3) {
+ return null;
+ }
+ var fileName = splits[2];
+ var index;
+ for (index = 3; index < splitLen; index++) {
+ fileName = fileName + Constants.PARAM_SEPARATOR + splits[index];
+ }
+ return [splits[0], splits[1], fileName];
+ }
+ },
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/sorter.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/sorter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/sorter.js
new file mode 100644
index 0000000..febef6f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/sorter.js
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+
+import Converter from 'yarn-ui/utils/converter';
+import Ember from 'ember';
+
+export default {
+ _initElapsedTimeSorter: function() {
+ Ember.$.extend(Ember.$.fn.dataTableExt.oSort, {
+ "elapsed-time-pre": function (a) {
+ return Converter.padding(Converter.elapsedTimeToMs(a), 20);
+ },
+ });
+ },
+
+ _initNaturalSorter: function() {
+ Ember.$.extend(Ember.$.fn.dataTableExt.oSort, {
+ "natural-asc": function (a, b) {
+ return naturalSort(a,b);
+ },
+ "natural-desc": function (a, b) {
+ return naturalSort(a,b) * -1;
+ },
+ });
+ },
+
+ initDataTableSorter: function() {
+ this._initElapsedTimeSorter();
+ this._initNaturalSorter();
+ },
+};
+
+/**
+ * Natural sort implementation.
+ * Typically used to sort application Ids'.
+ */
+function naturalSort(a, b) {
+ var diff = a.length - b.length;
+ if (diff != 0) {
+ var splitA = a.split("_");
+ var splitB = b.split("_");
+ if (splitA.length != splitB.length) {
+ return a.localeCompare(b);
+ }
+ for (var i = 1; i < splitA.length; i++) {
+ var splitdiff = splitA[i].length - splitB[i].length;
+ if (splitdiff != 0) {
+ return splitdiff;
+ }
+ var splitCompare = splitA[i].localeCompare(splitB[i]);
+ if (splitCompare != 0) {
+ return splitCompare;
+ }
+ }
+ return diff;
+ }
+ return a.localeCompare(b);
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
new file mode 100644
index 0000000..de66650
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
@@ -0,0 +1,22 @@
+{
+ "name": "yarn-ui",
+ "dependencies": {
+ "ember": "2.0.1",
+ "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.4",
+ "ember-cli-test-loader": "ember-cli-test-loader#0.1.3",
+ "ember-data": "2.0.0",
+ "ember-load-initializers": "ember-cli/ember-load-initializers#0.1.6",
+ "ember-qunit": "0.4.9",
+ "ember-qunit-notifications": "0.0.7",
+ "ember-resolver": "~0.1.18",
+ "jquery": "1.11.3",
+ "loader.js": "ember-cli/loader.js#3.2.1",
+ "qunit": "~1.18.0",
+ "bootstrap": "~3.3.2",
+ "d3": "~3.5.6",
+ "datatables": "~1.10.8",
+ "spin.js": "~2.3.2",
+ "momentjs": "~2.10.6",
+ "select2": "4.0.0"
+ }
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
new file mode 100644
index 0000000..9a14068
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
@@ -0,0 +1,65 @@
+/**
+ * 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.
+ */
+
+/* jshint node: true */
+
+module.exports = function(environment) {
+ var ENV = {
+ modulePrefix: 'yarn-ui',
+ environment: environment,
+ baseURL: '/',
+ locationType: 'auto',
+ EmberENV: {
+ FEATURES: {
+ // Here you can enable experimental features on an ember canary build
+ // e.g. 'with-controller': true
+ }
+ },
+
+ APP: {
+ // Here you can pass flags/options to your application instance
+ // when it is created
+ }
+ };
+
+ if (environment === 'development') {
+ // ENV.APP.LOG_RESOLVER = true;
+ // ENV.APP.LOG_ACTIVE_GENERATION = true;
+ // ENV.APP.LOG_TRANSITIONS = true;
+ // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
+ // ENV.APP.LOG_VIEW_LOOKUPS = true;
+ }
+
+ if (environment === 'test') {
+ // Testem prefers this...
+ ENV.baseURL = '/';
+ ENV.locationType = 'none';
+
+ // keep test console output quieter
+ ENV.APP.LOG_ACTIVE_GENERATION = false;
+ ENV.APP.LOG_VIEW_LOOKUPS = false;
+
+ ENV.APP.rootElement = '#ember-testing';
+ }
+
+ if (environment === 'production') {
+
+ }
+
+ return ENV;
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
new file mode 100644
index 0000000..cf5ad83
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
@@ -0,0 +1,47 @@
+/**
+ * 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.
+ */
+
+/* global require, module */
+var EmberApp = require('ember-cli/lib/broccoli/ember-app');
+
+module.exports = function(defaults) {
+ var app = new EmberApp(defaults, {
+ // Add options here
+ });
+
+ app.import("bower_components/datatables/media/css/jquery.dataTables.min.css");
+ app.import("bower_components/datatables/media/js/jquery.dataTables.min.js");
+ app.import("bower_components/momentjs/min/moment.min.js");
+ app.import("bower_components/select2/dist/css/select2.min.css");
+ app.import("bower_components/select2/dist/js/select2.min.js");
+
+ // Use `app.import` to add additional libraries to the generated
+ // output files.
+ //
+ // If you need to use different assets in different
+ // environments, specify an object as the first parameter. That
+ // object's keys should be the environment name and the values
+ // should be the asset to use in that environment.
+ //
+ // If the library that you are including contains AMD or ES6
+ // modules that you would like to import into your application
+ // please specify an object with the list of modules as keys
+ // along with the exports of each module as its value.
+
+ return app.toTree();
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/jsconfig.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/jsconfig.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/jsconfig.json
new file mode 100644
index 0000000..875bb90
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/jsconfig.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "target": "ES6",
+ "module": "commonjs"
+ }
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
new file mode 100644
index 0000000..b52ac1d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "yarn-ui",
+ "version": "0.0.1",
+ "description": "New UI framework of Apache Hadoop YARN",
+ "private": true,
+ "directories": {
+ "doc": "doc",
+ "test": "tests"
+ },
+ "scripts": {
+ "build": "ember build",
+ "start": "ember server",
+ "test": "ember test"
+ },
+ "repository": "",
+ "engines": {
+ "node": ">= 0.10.0"
+ },
+ "author": "",
+ "license": "Apache",
+ "devDependencies": {
+ "broccoli-asset-rev": "^2.1.2",
+ "ember-bootstrap": "0.2.0",
+ "ember-cli": "1.13.8",
+ "ember-cli-app-version": "0.5.0",
+ "ember-cli-babel": "^5.1.3",
+ "ember-cli-content-security-policy": "0.4.0",
+ "ember-cli-dependency-checker": "^1.0.1",
+ "ember-cli-htmlbars": "0.7.9",
+ "ember-cli-htmlbars-inline-precompile": "^0.2.0",
+ "ember-cli-ic-ajax": "0.2.1",
+ "ember-cli-inject-live-reload": "^1.3.1",
+ "ember-cli-qunit": "^1.0.0",
+ "ember-cli-release": "0.2.3",
+ "ember-cli-sri": "^1.0.3",
+ "ember-cli-uglify": "^1.2.0",
+ "ember-d3": "0.1.0",
+ "ember-data": "1.13.8",
+ "ember-disable-proxy-controllers": "^1.0.0",
+ "ember-export-application-global": "^1.0.3",
+ "ember-spin-spinner": "0.2.3",
+ "select2": "4.0.0"
+ }
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/Sorting icons.psd
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/Sorting icons.psd b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/Sorting icons.psd
new file mode 100644
index 0000000..53b2e06
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/Sorting icons.psd differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/favicon.ico
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/favicon.ico b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/favicon.ico
new file mode 100644
index 0000000..6eeaa2a
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/favicon.ico differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_asc.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_asc.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_asc.png
new file mode 100644
index 0000000..e1ba61a
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_asc.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_asc_disabled.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_asc_disabled.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_asc_disabled.png
new file mode 100644
index 0000000..fb11dfe
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_asc_disabled.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_both.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_both.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_both.png
new file mode 100644
index 0000000..af5bc7c
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_both.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_desc.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_desc.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_desc.png
new file mode 100644
index 0000000..0e156de
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_desc.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_desc_disabled.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_desc_disabled.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_desc_disabled.png
new file mode 100644
index 0000000..c9fdd8a
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/datatables/sort_desc_disabled.png differ
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/crossdomain.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/crossdomain.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/crossdomain.xml
new file mode 100644
index 0000000..43a2ea6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/crossdomain.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+
+<!--
+* 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.
+-->
+
+<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
+<cross-domain-policy>
+ <!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
+
+ <!-- Most restrictive policy: -->
+ <site-control permitted-cross-domain-policies="none"/>
+
+ <!-- Least restrictive policy: -->
+ <!--
+ <site-control permitted-cross-domain-policies="all"/>
+ <allow-access-from domain="*" to-ports="*" secure="false"/>
+ <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
+ -->
+</cross-domain-policy>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/testem.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/testem.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/testem.json
new file mode 100644
index 0000000..0f35392
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/testem.json
@@ -0,0 +1,12 @@
+{
+ "framework": "qunit",
+ "test_page": "tests/index.html?hidepassed",
+ "disable_watching": true,
+ "launch_in_ci": [
+ "PhantomJS"
+ ],
+ "launch_in_dev": [
+ "PhantomJS",
+ "Chrome"
+ ]
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/helpers/resolver.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/helpers/resolver.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/helpers/resolver.js
new file mode 100644
index 0000000..f94998c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/helpers/resolver.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Resolver from 'ember/resolver';
+import config from '../../config/environment';
+
+var resolver = Resolver.create();
+
+resolver.namespace = {
+ modulePrefix: config.modulePrefix,
+ podModulePrefix: config.podModulePrefix
+};
+
+export default resolver;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/helpers/start-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/helpers/start-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/helpers/start-app.js
new file mode 100644
index 0000000..a7d05be
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/helpers/start-app.js
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import Application from '../../app';
+import config from '../../config/environment';
+
+export default function startApp(attrs) {
+ var application;
+
+ var attributes = Ember.merge({}, config.APP);
+ attributes = Ember.merge(attributes, attrs); // use defaults, but you can override;
+
+ Ember.run(function() {
+ application = Application.create(attributes);
+ application.setupForTesting();
+ application.injectTestHelpers();
+ });
+
+ return application;
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/index.html
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/index.html b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/index.html
new file mode 100644
index 0000000..9681e8b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/index.html
@@ -0,0 +1,51 @@
+<!--
+* 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.
+-->
+
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <title>YarnUi Tests</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ {{content-for 'head'}}
+ {{content-for 'test-head'}}
+
+ <link rel="stylesheet" href="assets/vendor.css">
+ <link rel="stylesheet" href="assets/yarn-ui.css">
+ <link rel="stylesheet" href="assets/test-support.css">
+
+ {{content-for 'head-footer'}}
+ {{content-for 'test-head-footer'}}
+ </head>
+ <body>
+
+ {{content-for 'body'}}
+ {{content-for 'test-body'}}
+ <script src="assets/vendor.js"></script>
+ <script src="assets/test-support.js"></script>
+ <script src="assets/yarn-ui.js"></script>
+ <script src="testem.js"></script>
+ <script src="assets/test-loader.js"></script>
+
+ {{content-for 'body-footer'}}
+ {{content-for 'test-body-footer'}}
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/test-helper.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/test-helper.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/test-helper.js
new file mode 100644
index 0000000..96975ee
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/test-helper.js
@@ -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.
+ */
+
+import resolver from './helpers/resolver';
+import {
+ setResolver
+} from 'ember-qunit';
+
+setResolver(resolver);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-app-test.js
new file mode 100644
index 0000000..726345f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-app-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-app', 'Unit | Adapter | yarn app', {
+ // Specify the other units that are required for this test.
+ // needs: ['serializer:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ var adapter = this.subject();
+ assert.ok(adapter);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-container-log-test.js
new file mode 100644
index 0000000..e6e7b43
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-container-log-test.js
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+import Constants from 'yarn-ui/constants';
+
+moduleFor('adapter:yarn-container-log', 'Unit | Adapter | ContainerLog', {
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+
+ assert.ok(adapter);
+ assert.ok(adapter.urlForFindRecord);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal(adapter.headers.Accept, "text/plain");
+ assert.equal(adapter.namespace, "ws/v1/node");
+});
+
+test('urlForFindRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(adapter.urlForFindRecord("localhost:8042" +
+ Constants.PARAM_SEPARATOR + "container_e27_11111111111_0001_01_000001" +
+ Constants.PARAM_SEPARATOR + "syslog"),
+ host + "localhost:8042/ws/v1/node/containerlogs/" +
+ "container_e27_11111111111_0001_01_000001/syslog");
+});
+
+test('ajaxOptions test', function(assert) {
+ let adapter = this.subject();
+ var hash = adapter.ajaxOptions('/containerlogs', 'type', {});
+ assert.equal(hash.dataType, 'text');
+});
+
+test('findRecord test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testSnapshot = {};
+ let host = adapter.host;
+ let testId = "localhost:8042" + Constants.PARAM_SEPARATOR +
+ "container_e27_11111111111_0001_01_000001" + Constants.PARAM_SEPARATOR +
+ "syslog";
+ assert.expect(2);
+
+ adapter.ajax = function (url, method) {
+ assert.equal(url, host + "localhost:8042/ws/v1/node/containerlogs/" +
+ "container_e27_11111111111_0001_01_000001/syslog");
+ assert.equal(method, 'GET');
+ };
+
+ adapter.findRecord(testStore, testModel, testId, testSnapshot);
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-app-test.js
new file mode 100644
index 0000000..3a25996
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-app-test.js
@@ -0,0 +1,93 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-node-app', 'Unit | Adapter | NodeApp', {
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+ assert.expect(11);
+ assert.ok(adapter);
+ assert.ok(adapter.urlForQueryRecord);
+ assert.ok(adapter.queryRecord);
+ assert.ok(adapter.urlForQuery);
+ assert.ok(adapter.query);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal("application/json", adapter.headers.Accept);
+ assert.equal("ws/v1/node", adapter.namespace);
+});
+
+test('urlForQueryRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(
+ host + "localhost:8042/ws/v1/node/apps/application_1111111111_1111",
+ adapter.urlForQueryRecord(
+ {nodeAddr: "localhost:8042", appId: "application_1111111111_1111"}));
+});
+
+test('urlForQuery test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(host + "localhost:8042/ws/v1/node/apps",
+ adapter.urlForQuery({nodeAddr: "localhost:8042"}));
+});
+
+test('query test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testQuery = {nodeAddr: "localhost:8042"};
+ let host = adapter.host;
+ assert.expect(3);
+
+ adapter.ajax = function (url, method, hash) {
+ assert.equal(host + "localhost:8042/ws/v1/node/apps", url);
+ assert.equal('GET', method);
+ assert.equal(null, hash.data);
+ };
+
+ adapter.query(testStore, testModel, testQuery);
+});
+
+test('queryRecord test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testQuery = {
+ nodeAddr: "localhost:8042",
+ appId: "application_1111111111_1111"
+ };
+ let host = adapter.host;
+ assert.expect(3);
+
+ adapter.ajax = function (url, method, hash) {
+ assert.equal(
+ host + "localhost:8042/ws/v1/node/apps/application_1111111111_1111",
+ url);
+ assert.equal('GET', method);
+ assert.equal(null, hash.data);
+ };
+
+ adapter.queryRecord(testStore, testModel, testQuery);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-container-test.js
new file mode 100644
index 0000000..7d2bb2d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-container-test.js
@@ -0,0 +1,93 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-node-container', 'Unit | Adapter | NodeContainer', {
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+ assert.expect(11);
+ assert.ok(adapter);
+ assert.ok(adapter.urlForQueryRecord);
+ assert.ok(adapter.queryRecord);
+ assert.ok(adapter.urlForQuery);
+ assert.ok(adapter.query);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal("application/json", adapter.headers.Accept);
+ assert.equal("ws/v1/node", adapter.namespace);
+});
+
+test('urlForQueryRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(host + "localhost:8042/ws/v1/node/containers/" +
+ "container_e27_11111111111_0001_01_000001",
+ adapter.urlForQueryRecord(
+ {nodeHttpAddr: "localhost:8042",
+ containerId: "container_e27_11111111111_0001_01_000001"}));
+});
+
+test('urlForQuery test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(host + "localhost:8042/ws/v1/node/containers",
+ adapter.urlForQuery({nodeHttpAddr: "localhost:8042"}));
+});
+
+test('query test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testQuery = {nodeHttpAddr: "localhost:8042"};
+ let host = adapter.host;
+ assert.expect(3);
+
+ adapter.ajax = function (url, method, hash) {
+ assert.equal(host + "localhost:8042/ws/v1/node/containers", url);
+ assert.equal('GET', method);
+ assert.equal(null, hash.data);
+ };
+
+ adapter.query(testStore, testModel, testQuery);
+});
+
+test('queryRecord test', function(assert) {
+ let adapter = this.subject(),
+ testModel = { modelName: "testModel" },
+ testStore = {},
+ testQuery = {
+ nodeHttpAddr: "localhost:8042",
+ containerId: "container_e27_11111111111_0001_01_000001"
+ };
+ let host = adapter.host;
+ assert.expect(3);
+
+ adapter.ajax = function (url, method, hash) {
+ assert.equal(host + "localhost:8042/ws/v1/node/containers/" +
+ "container_e27_11111111111_0001_01_000001", url);
+ assert.equal('GET', method);
+ assert.equal(null, hash.data);
+ };
+
+ adapter.queryRecord(testStore, testModel, testQuery);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-test.js
new file mode 100644
index 0000000..15aefef
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-node-test.js
@@ -0,0 +1,42 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-node', 'Unit | Adapter | Node', {
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+
+ assert.ok(adapter);
+ assert.ok(adapter.urlForFindRecord);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal(adapter.headers.Accept, "application/json");
+ assert.equal(adapter.namespace, "ws/v1/node");
+});
+
+test('urlForFindRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(adapter.urlForFindRecord("localhost:8042"),
+ host + "localhost:8042/ws/v1/node");
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-rm-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-rm-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-rm-node-test.js
new file mode 100644
index 0000000..bf009d4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/adapters/yarn-rm-node-test.js
@@ -0,0 +1,44 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:yarn-rm-node', 'Unit | Adapter | RMNode', {
+ // Specify the other units that are required for this test.
+ // needs: ['serializer:foo']
+});
+
+test('Basic creation', function(assert) {
+ let adapter = this.subject();
+
+ assert.ok(adapter);
+ assert.ok(adapter.urlForFindRecord);
+ assert.ok(adapter.ajax);
+ assert.ok(adapter.headers);
+ assert.ok(adapter.host);
+ assert.ok(adapter.namespace);
+ assert.equal(adapter.headers.Accept, "application/json");
+ assert.equal(adapter.namespace, "ws/v1/cluster");
+});
+
+test('urlForFindRecord test', function(assert) {
+ let adapter = this.subject();
+ let host = adapter.host;
+ assert.equal(adapter.urlForFindRecord("localhost:8042"),
+ host + "/ws/v1/cluster/nodes/localhost:8042");
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-apps-test.js
new file mode 100644
index 0000000..baa67cc
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-apps-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-apps', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ var controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queues-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queues-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queues-test.js
new file mode 100644
index 0000000..39cf493
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queues-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-queues', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ var controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/mixins/charts-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/mixins/charts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/mixins/charts-test.js
new file mode 100644
index 0000000..1f5ab99
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/mixins/charts-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import ChartsMixin from '../../../mixins/charts';
+import { module, test } from 'qunit';
+
+module('Unit | Mixin | charts');
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ var ChartsObject = Ember.Object.extend(ChartsMixin);
+ var subject = ChartsObject.create();
+ assert.ok(subject);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-app-test.js
new file mode 100644
index 0000000..8b6df23
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-app-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-app', 'Unit | Model | yarn app', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('it exists', function(assert) {
+ var model = this.subject();
+ // var store = this.store();
+ assert.ok(!!model);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-container-log-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-container-log-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-container-log-test.js
new file mode 100644
index 0000000..45808a5
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-container-log-test.js
@@ -0,0 +1,48 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-container-log', 'Unit | Model | ContainerLog', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.logs);
+ assert.ok(model.containerID);
+ assert.ok(model.logFileName);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ Ember.run(function () {
+ model.set("logs", "This is syslog");
+ model.set("containerID", "container_e32_1456000363780_0002_01_000001");
+ model.set("logFileName", "syslog");
+ assert.equal(model.get("logs"), "This is syslog");
+ assert.equal(model.get("containerID"), "container_e32_1456000363780_0002_01_000001");
+ assert.equal(model.get("logFileName"), "syslog");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-app-test.js
new file mode 100644
index 0000000..7e2e62f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-app-test.js
@@ -0,0 +1,65 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-node-app', 'Unit | Model | NodeApp', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.appId);
+ assert.ok(model.state);
+ assert.ok(model.user);
+ assert.ok(model.containers);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ assert.expect(9);
+ Ember.run(function () {
+ model.set("appId", "application_1456251210105_0002");
+ model.set("id", "application_1456251210105_0002");
+ model.set("state", "RUNNING");
+ model.set("user", "hadoop");
+ model.set("containers", ["container_e38_1456251210105_0002_01_000001",
+ "container_e38_1456251210105_0002_01_000002"]);
+ assert.equal(model.get("appId"), "application_1456251210105_0002");
+ assert.equal(model.get("state"), "RUNNING");
+ assert.equal(model.get("user"), "hadoop");
+ assert.deepEqual(model.get("containers"),
+ ["container_e38_1456251210105_0002_01_000001",
+ "container_e38_1456251210105_0002_01_000002"]);
+ assert.equal(model.get("appStateStyle"), "label label-primary");
+ assert.equal(model.get("isDummyApp"), false);
+ model.set("id", "dummy");
+ assert.equal(model.get("isDummyApp"), true);
+ model.set("state", "FINISHED");
+ assert.equal(model.get("appStateStyle"), "label label-success");
+ model.set("state", "NEW");
+ assert.equal(model.get("appStateStyle"), "label label-default");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-container-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-container-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-container-test.js
new file mode 100644
index 0000000..88bf233
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-container-test.js
@@ -0,0 +1,78 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-node-container', 'Unit | Model | NodeContainer', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.containerId);
+ assert.ok(model.state);
+ assert.ok(model.user);
+ assert.ok(model.exitCode);
+ assert.ok(model.totalMemoryNeeded);
+ assert.ok(model.totalVCoresNeeded);
+ assert.ok(model.containerLogFiles);
+ assert.ok(model.isDummyContainer);
+ assert.ok(model.containerStateStyle);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ Ember.run(function () {
+ model.set("containerId", "container_e32_1456000363780_0002_01_000003");
+ model.set("state", "RUNNING");
+ model.set("exitCode", "-1000");
+ model.set("user", "hadoop");
+ model.set("id", "container_e32_1456000363780_0002_01_000003");
+ model.set("totalMemoryNeeded", 1024);
+ model.set("totalVCoresNeeded", 1);
+ model.set("containerLogFiles", ["syslog", "stderr", "stdout"]);
+ assert.equal(model.get("containerId"), "container_e32_1456000363780_0002_01_000003");
+ assert.equal(model.get("id"), "container_e32_1456000363780_0002_01_000003");
+ assert.equal(model.get("totalMemoryNeeded"), 1024);
+ assert.equal(model.get("totalVCoresNeeded"), 1);
+ assert.equal(model.get("user"), "hadoop");
+ assert.equal(model.get("exitCode"), "-1000");
+ assert.equal(model.get("containerLogFiles").length, 3);
+ assert.deepEqual(model.get("containerLogFiles"), ["syslog", "stderr", "stdout"]);
+ assert.equal(model.get("isDummyContainer"), false);
+ assert.equal(model.get("containerStateStyle"), "label label-primary");
+ model.set("id", "dummy");
+ assert.equal(model.get("isDummyContainer"), true);
+ model.set("state", "EXITED_WITH_SUCCESS");
+ assert.equal(model.get("containerStateStyle"), "label label-success");
+ model.set("state", "EXITED_WITH_FAILURE");
+ assert.equal(model.get("containerStateStyle"), "label label-danger");
+ model.set("state", "DONE");
+ model.set("exitCode", "0");
+ assert.equal(model.get("containerStateStyle"), "label label-success");
+ model.set("exitCode", "-105");
+ assert.equal(model.get("containerStateStyle"), "label label-danger");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-test.js
new file mode 100644
index 0000000..5877589
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-node-test.js
@@ -0,0 +1,58 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-node', 'Unit | Model | Node', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.totalVmemAllocatedContainersMB);
+ assert.ok(model.vmemCheckEnabled);
+ assert.ok(model.pmemCheckEnabled);
+ assert.ok(model.nodeHealthy);
+ assert.ok(model.lastNodeUpdateTime);
+ assert.ok(model.healthReport);
+ assert.ok(model.nmStartupTime);
+ assert.ok(model.nodeManagerBuildVersion);
+ assert.ok(model.hadoopBuildVersion);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ assert.expect(4);
+ Ember.run(function () {
+ model.set("totalVmemAllocatedContainersMB", 4096);
+ model.set("totalPmemAllocatedContainersMB", 2048);
+ model.set("totalVCoresAllocatedContainers", 4);
+ model.set("hadoopBuildVersion", "3.0.0-SNAPSHOT");
+ assert.equal(model.get("totalVmemAllocatedContainersMB"), 4096);
+ assert.equal(model.get("totalPmemAllocatedContainersMB"), 2048);
+ assert.equal(model.get("totalVCoresAllocatedContainers"), 4);
+ assert.equal(model.get("hadoopBuildVersion"), "3.0.0-SNAPSHOT");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-rm-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-rm-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-rm-node-test.js
new file mode 100644
index 0000000..4fd2517
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/models/yarn-rm-node-test.js
@@ -0,0 +1,95 @@
+/**
+ * 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.
+ */
+
+import { moduleForModel, test } from 'ember-qunit';
+
+moduleForModel('yarn-rm-node', 'Unit | Model | RMNode', {
+ // Specify the other units that are required for this test.
+ needs: []
+});
+
+test('Basic creation test', function(assert) {
+ let model = this.subject();
+
+ assert.ok(model);
+ assert.ok(model._notifyProperties);
+ assert.ok(model.didLoad);
+ assert.ok(model.rack);
+ assert.ok(model.state);
+ assert.ok(model.nodeHostName);
+ assert.ok(model.nodeHTTPAddress);
+ assert.ok(model.lastHealthUpdate);
+ assert.ok(model.healthReport);
+ assert.ok(model.numContainers);
+ assert.ok(model.usedMemoryMB);
+ assert.ok(model.availMemoryMB);
+ assert.ok(model.usedVirtualCores);
+ assert.ok(model.availableVirtualCores);
+ assert.ok(model.version);
+ assert.ok(model.nodeLabels);
+ assert.ok(model.nodeLabelsAsString);
+ assert.ok(model.nodeStateStyle);
+ assert.ok(model.isDummyNode);
+ assert.ok(model.getMemoryDataForDonutChart);
+ assert.ok(model.getVCoreDataForDonutChart);
+});
+
+test('test fields', function(assert) {
+ let model = this.subject();
+
+ Ember.run(function () {
+ model.set("rack", "/default-rack");
+ model.set("state", "RUNNING");
+ model.set("nodeHostName", "localhost");
+ model.set("id", "localhost:64318");
+ model.set("nodeHTTPAddress", "localhost:8042");
+ model.set("usedMemoryMB", 1024);
+ model.set("availMemoryMB", 7168);
+ model.set("usedVirtualCores", 1);
+ model.set("availableVirtualCores", 7);
+ model.set("nodeLabels", ["x"]);
+ assert.equal(model.get("rack"), "/default-rack");
+ assert.equal(model.get("state"), "RUNNING");
+ assert.equal(model.get("nodeHostName"), "localhost");
+ assert.equal(model.get("id"), "localhost:64318");
+ assert.equal(model.get("nodeHTTPAddress"), "localhost:8042");
+ assert.equal(model.get("usedMemoryMB"), 1024);
+ assert.equal(model.get("availMemoryMB"), 7168);
+ assert.equal(model.get("usedVirtualCores"), 1);
+ assert.equal(model.get("availableVirtualCores"), 7);
+ assert.equal(model.get("isDummyNode"), false);
+ assert.deepEqual(model.get("nodeLabels"), ["x"]);
+ assert.equal(model.get("nodeLabelsAsString"), "x");
+ assert.deepEqual(model.get("nodeStateStyle"), "label label-success");
+ assert.deepEqual(model.get("getMemoryDataForDonutChart"),
+ [{label: "Used", value: 1024}, {label: "Available", value: 7168}]);
+ assert.deepEqual(model.get("getVCoreDataForDonutChart"),
+ [{label: "Used", value: 1}, {label: "Available", value: 7}]);
+ model.set("state", "SHUTDOWN");
+ assert.deepEqual(model.get("nodeStateStyle"), "label label-danger");
+ model.set("state", "REBOOTED");
+ assert.deepEqual(model.get("nodeStateStyle"), "label label-warning");
+ model.set("state", "NEW");
+ assert.deepEqual(model.get("nodeStateStyle"), "label label-default");
+ model.set("nodeLabels", ["x","y"]);
+ assert.equal(model.get("nodeLabelsAsString"), "x");
+ model.set("nodeLabels", undefined);
+ assert.equal(model.get("nodeLabelsAsString"), "");
+ });
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-apps-test.js
new file mode 100644
index 0000000..3a69c9f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-apps-test.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-apps', 'Unit | Route | yarn apps', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+test('it exists', function(assert) {
+ var route = this.subject();
+ assert.ok(route);
+});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[13/50] [abbrv] hadoop git commit: YARN-5321. [YARN-3368] Add
resource usage for application by node managers (Wangda Tan via Sunil G)
YARN-5320. [YARN-3368] Add resource usage by applications and queues to
cluster overview page (Wangda Tan via Sunil G)
Posted by su...@apache.org.
YARN-5321. [YARN-3368] Add resource usage for application by node managers (Wangda Tan via Sunil G)
YARN-5320. [YARN-3368] Add resource usage by applications and queues to cluster overview page (Wangda Tan via Sunil G)
YARN-5322. [YARN-3368] Add a node heat chart map (Wangda Tan via Sunil G)
YARN-5347. [YARN-3368] Applications page improvements (Sreenath Somarajapuram via Sunil G)
YARN-5348. [YARN-3368] Node details page improvements (Sreenath Somarajapuram via Sunil G)
YARN-5346. [YARN-3368] Queues page improvements (Sreenath Somarajapuram via Sunil G)
YARN-5345. [YARN-3368] Cluster overview page improvements (Sreenath Somarajapuram via Sunil G)
YARN-5344. [YARN-3368] Generic UI improvements (Sreenath Somarajapuram via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/52661fef
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/52661fef
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/52661fef
Branch: refs/heads/YARN-3368
Commit: 52661fef7f3a3ccac60ae4531b94dbac32e20f8b
Parents: 52446f1
Author: Sunil <su...@apache.org>
Authored: Fri Jul 15 21:16:06 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../src/main/webapp/app/adapters/yarn-app.js | 14 +
.../app/components/app-usage-donut-chart.js | 67 ++++
.../src/main/webapp/app/components/bar-chart.js | 5 +
.../app/components/base-chart-component.js | 55 ++-
.../app/components/base-usage-donut-chart.js | 43 +++
.../main/webapp/app/components/donut-chart.js | 55 ++-
.../main/webapp/app/components/nodes-heatmap.js | 209 +++++++++++
...er-app-memusage-by-nodes-stacked-barchart.js | 88 +++++
...app-ncontainers-by-nodes-stacked-barchart.js | 67 ++++
.../app/components/queue-usage-donut-chart.js | 69 ++++
.../main/webapp/app/components/queue-view.js | 3 +-
.../main/webapp/app/components/simple-table.js | 9 +-
.../webapp/app/components/stacked-barchart.js | 198 +++++++++++
.../main/webapp/app/components/timeline-view.js | 2 +-
.../main/webapp/app/components/tree-selector.js | 43 ++-
.../webapp/app/controllers/cluster-overview.js | 9 +
.../webapp/app/controllers/yarn-app-attempt.js | 40 +++
.../webapp/app/controllers/yarn-app-attempts.js | 40 +++
.../src/main/webapp/app/controllers/yarn-app.js | 38 ++
.../main/webapp/app/controllers/yarn-apps.js | 9 +
.../webapp/app/controllers/yarn-node-apps.js | 39 +++
.../app/controllers/yarn-node-containers.js | 39 +++
.../main/webapp/app/controllers/yarn-node.js | 37 ++
.../app/controllers/yarn-nodes-heatmap.js | 36 ++
.../main/webapp/app/controllers/yarn-nodes.js | 33 ++
.../webapp/app/controllers/yarn-queue-apps.js | 46 +++
.../main/webapp/app/controllers/yarn-queue.js | 20 ++
.../main/webapp/app/controllers/yarn-queues.js | 34 ++
.../webapp/app/controllers/yarn-services.js | 34 ++
.../main/webapp/app/models/cluster-metric.js | 2 +-
.../main/webapp/app/models/yarn-app-attempt.js | 11 +
.../src/main/webapp/app/models/yarn-app.js | 4 +
.../src/main/webapp/app/models/yarn-rm-node.js | 7 +
.../src/main/webapp/app/router.js | 15 +-
.../src/main/webapp/app/routes/application.js | 2 +
.../main/webapp/app/routes/cluster-overview.js | 9 +-
.../main/webapp/app/routes/yarn-app-attempts.js | 30 ++
.../src/main/webapp/app/routes/yarn-app.js | 17 +-
.../src/main/webapp/app/routes/yarn-apps.js | 6 +-
.../main/webapp/app/routes/yarn-apps/apps.js | 22 ++
.../webapp/app/routes/yarn-apps/services.js | 22 ++
.../src/main/webapp/app/routes/yarn-node.js | 1 +
.../src/main/webapp/app/routes/yarn-nodes.js | 5 +-
.../webapp/app/routes/yarn-nodes/heatmap.js | 22 ++
.../main/webapp/app/routes/yarn-nodes/table.js | 22 ++
.../main/webapp/app/routes/yarn-queue-apps.js | 36 ++
.../src/main/webapp/app/routes/yarn-queues.js | 38 ++
.../webapp/app/serializers/yarn-app-attempt.js | 19 +-
.../src/main/webapp/app/serializers/yarn-app.js | 8 +-
.../webapp/app/serializers/yarn-container.js | 20 +-
.../src/main/webapp/app/styles/app.css | 139 ++++++--
.../main/webapp/app/templates/application.hbs | 99 ++++--
.../webapp/app/templates/cluster-overview.hbs | 168 ++++++---
.../app/templates/components/app-table.hbs | 10 +-
.../templates/components/node-menu-panel.hbs | 2 +-
.../app/templates/components/nodes-heatmap.hbs | 27 ++
.../components/queue-configuration-table.hbs | 4 -
.../templates/components/queue-navigator.hbs | 14 +-
.../app/templates/components/timeline-view.hbs | 3 +-
.../webapp/app/templates/yarn-app-attempt.hbs | 13 +-
.../webapp/app/templates/yarn-app-attempts.hbs | 57 +++
.../src/main/webapp/app/templates/yarn-app.hbs | 346 ++++++++++++-------
.../src/main/webapp/app/templates/yarn-apps.hbs | 82 ++++-
.../webapp/app/templates/yarn-apps/apps.hbs | 24 ++
.../webapp/app/templates/yarn-apps/services.hbs | 27 ++
.../webapp/app/templates/yarn-node-apps.hbs | 4 +
.../app/templates/yarn-node-container.hbs | 4 +
.../app/templates/yarn-node-containers.hbs | 4 +
.../src/main/webapp/app/templates/yarn-node.hbs | 148 ++++----
.../main/webapp/app/templates/yarn-nodes.hbs | 99 +++---
.../webapp/app/templates/yarn-nodes/heatmap.hbs | 30 ++
.../webapp/app/templates/yarn-nodes/table.hbs | 67 ++++
.../webapp/app/templates/yarn-queue-apps.hbs | 66 ++++
.../main/webapp/app/templates/yarn-queue.hbs | 126 ++++---
.../main/webapp/app/templates/yarn-queues.hbs | 72 ++++
.../src/main/webapp/app/utils/color-utils.js | 67 ++++
.../src/main/webapp/app/utils/converter.js | 17 +
.../main/webapp/app/utils/href-address-utils.js | 29 ++
.../src/main/webapp/app/utils/mock.js | 36 ++
.../hadoop-yarn-ui/src/main/webapp/bower.json | 3 +-
.../hadoop-yarn-ui/src/main/webapp/package.json | 4 +
.../unit/controllers/yarn-app-attempt-test.js | 30 ++
.../unit/controllers/yarn-app-attempts-test.js | 30 ++
.../tests/unit/controllers/yarn-app-test.js | 30 ++
.../unit/controllers/yarn-node-apps-test.js | 30 ++
.../controllers/yarn-node-containers-test.js | 30 ++
.../tests/unit/controllers/yarn-node-test.js | 30 ++
.../unit/controllers/yarn-nodes-heatmap-test.js | 30 ++
.../tests/unit/controllers/yarn-nodes-test.js | 30 ++
.../unit/controllers/yarn-queue-apps-test.js | 30 ++
.../tests/unit/controllers/yarn-queues-test.js | 4 +-
.../unit/controllers/yarn-services-test.js | 30 ++
.../tests/unit/routes/yarn-app-attempts-test.js | 29 ++
.../tests/unit/routes/yarn-queue-apps-test.js | 29 ++
.../tests/unit/routes/yarn-queues-test.js | 29 ++
95 files changed, 3399 insertions(+), 482 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
index afd93f4..67a2847 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
@@ -23,6 +23,20 @@ export default AbstractAdapter.extend({
restNameSpace: "cluster",
serverName: "RM",
+ urlForQuery(query, modelName) {
+ var url = this._buildURL();
+ if (query.state) {
+ url = url + '/apps/?state=' + query.state;
+ }
+ return url;
+ },
+
+ urlForFindRecord(id, modelName, snapshot) {
+ var url = this._buildURL();
+ url = url + '/apps/' + id;
+ return url;
+ },
+
pathForType(modelName) {
return 'apps'; // move to some common place, return path by modelname.
},
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-usage-donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-usage-donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-usage-donut-chart.js
new file mode 100644
index 0000000..0baf630
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/app-usage-donut-chart.js
@@ -0,0 +1,67 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import DonutChart from 'yarn-ui/components/donut-chart';
+import BaseUsageDonutChart from 'yarn-ui/components/base-usage-donut-chart';
+import ColorUtils from 'yarn-ui/utils/color-utils';
+import HrefAddressUtils from 'yarn-ui/utils/href-address-utils';
+
+export default BaseUsageDonutChart.extend({
+ colors: d3.scale.category20().range(),
+
+ draw: function() {
+ this.initChart();
+ var usageByApps = [];
+ var avail = 100;
+
+ this.get("data").forEach(function (app) {
+ var v = app.get("clusterUsagePercentage");
+ if (v > 1e-2) {
+ usageByApps.push({
+ label: app.get("id"),
+ link: HrefAddressUtils.getApplicationLink(app.get("id")),
+ value: v.toFixed(2)
+ });
+
+ console.log(v);
+ avail = avail - v;
+ }
+ }.bind(this));
+
+ usageByApps.sort(function(a,b) {
+ return b.value - a.value;
+ });
+
+ usageByApps = this.mergeLongTails(usageByApps, 8);
+
+ usageByApps.push({
+ label: "Available",
+ value: avail.toFixed(4)
+ })
+
+ this.colors = ColorUtils.getColors(usageByApps.length, ["others", "good"], true);
+
+ this.renderDonutChart(usageByApps, this.get("title"), this.get("showLabels"),
+ this.get("middleLabel"), "100%", "%");
+ },
+
+ didInsertElement: function() {
+ this.draw();
+ },
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
index 8e48279..7bb292f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/bar-chart.js
@@ -116,6 +116,11 @@ export default BaseChartComponent.extend({
this.renderBarChart(this.get("data"), this.get("title"), this.get("textWidth"));
},
+ _dataChange: Ember.observer("data", function() {
+ this.chart.g.selectAll("*").remove();
+ this.renderBarChart(this.get("data"), this.get("title"), this.get("textWidth"));
+ }),
+
didInsertElement: function() {
this.draw();
},
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-chart-component.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-chart-component.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-chart-component.js
index b85b6ab4..d221488 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-chart-component.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-chart-component.js
@@ -17,23 +17,26 @@
*/
import Ember from 'ember';
+import Converter from 'yarn-ui/utils/converter';
export default Ember.Component.extend({
- chart: undefined,
tooltip : undefined,
colors: d3.scale.category10().range(),
- initChart: function() {
- this.chart = {
+ init: function () {
+ this._super();
+ this.set("chart", {
svg: undefined,
g: undefined,
h: 0,
w: 0,
tooltip: undefined
- };
+ });
+ },
+ initChart: function(removeLast = false) {
// Init tooltip if it is not initialized
- this.tooltip = d3.select("#chart-tooltip");
+ // this.tooltip = d3.select("#chart-tooltip");
if (!this.tooltip) {
this.tooltip = d3.select("body")
.append("div")
@@ -42,13 +45,16 @@ export default Ember.Component.extend({
.style("opacity", 0);
}
- // Init svg
- var svg = this.chart.svg;
- if (svg) {
- svg.remove();
+ var parentId = this.get("parentId");
+
+ if (removeLast) {
+ // Init svg
+ var svg = d3.select("#" + parentId + "-svg");
+ if (svg) {
+ svg.remove();
+ }
}
- var parentId = this.get("parentId");
var parent = d3.select("#" + parentId);
var bbox = parent.node().getBoundingClientRect();
this.chart.w = bbox.width - 30;
@@ -65,12 +71,13 @@ export default Ember.Component.extend({
this.chart.svg = parent.append("svg")
.attr("width", this.chart.w)
- .attr("height", this.chart.h);
+ .attr("height", this.chart.h)
+ .attr("id", parentId + "-svg");
this.chart.g = this.chart.svg.append("g");
},
- renderTitleAndBG: function(g, title, layout) {
+ renderTitleAndBG: function(g, title, layout, background=true) {
var bg = g.append("g");
bg.append("text")
.text(title)
@@ -78,12 +85,14 @@ export default Ember.Component.extend({
.attr("y", layout.y1 + layout.margin + 20)
.attr("class", "chart-title");
- bg.append("rect")
- .attr("x", layout.x1)
- .attr("y", layout.y1)
- .attr("width", layout.x2 - layout.x1)
- .attr("height", layout.y2 - layout.y1)
- .attr("class", "chart-frame");
+ if (background) {
+ bg.append("rect")
+ .attr("x", layout.x1)
+ .attr("y", layout.y1)
+ .attr("width", layout.x2 - layout.x1)
+ .attr("height", layout.y2 - layout.y1)
+ .attr("class", "chart-frame");
+ }
},
bindTooltip: function(d) {
@@ -100,7 +109,11 @@ export default Ember.Component.extend({
}
this.tooltip.style("opacity", .9);
- this.tooltip.html(data.label + " = " + data.value)
+ var value = data.value;
+ if (this.get("type") == "memory") {
+ value = Converter.memoryToSimpliedUnit(value);
+ }
+ this.tooltip.html(data.label + " = " + value)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY - 28) + "px");
}.bind(this))
@@ -109,6 +122,10 @@ export default Ember.Component.extend({
}.bind(this));
},
+ adjustMaxHeight: function(h) {
+ this.chart.svg.attr("height", h);
+ },
+
getLayout: function() {
var x1 = 0;
var y1 = 0;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-usage-donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-usage-donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-usage-donut-chart.js
new file mode 100644
index 0000000..bec06c9
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/base-usage-donut-chart.js
@@ -0,0 +1,43 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import DonutChart from 'yarn-ui/components/donut-chart';
+
+export default DonutChart.extend({
+ mergeLongTails: function(usages, nItemsKept) {
+ var arr = [];
+ for (var i = 0; i < Math.min(usages.length, nItemsKept); i++) {
+ arr.push(usages[i]);
+ }
+
+ var others = {
+ label: "Used by others",
+ value: 0
+ }
+
+ for (var i = nItemsKept; i < usages.length; i++) {
+ others.value += Number(usages[i].value);
+ }
+ others.value = others.value.toFixed(2);
+
+ arr.push(others)
+
+ return arr;
+ },
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
index e6dcb12..9a90855 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/donut-chart.js
@@ -18,13 +18,15 @@
import Ember from 'ember';
import BaseChartComponent from 'yarn-ui/components/base-chart-component';
+import ColorUtils from 'yarn-ui/utils/color-utils';
+import Converter from 'yarn-ui/utils/converter';
export default BaseChartComponent.extend({
/*
* data = [{label="xx", value=},{...}]
*/
renderDonutChart: function(data, title, showLabels = false,
- middleLabel = "Total", middleValue = undefined) {
+ middleLabel = "Total", middleValue = undefined, suffix = "") {
var g = this.chart.g;
var layout = this.getLayout();
this.renderTitleAndBG(g, title, layout);
@@ -39,7 +41,11 @@ export default BaseChartComponent.extend({
}
if (!middleValue) {
- middleValue = total;
+ if (this.get("type") == "memory") {
+ middleValue = Converter.memoryToSimpliedUnit(total);
+ } else {
+ middleValue = total;
+ }
}
//Width and height
@@ -48,6 +54,8 @@ export default BaseChartComponent.extend({
// 50 is for title
var outerRadius = (h - 50 - 2 * layout.margin) / 2;
var innerRadius = outerRadius * 0.618;
+ console.log("inner:" + innerRadius + " outer:" + outerRadius);
+
var arc = d3.svg.arc()
.innerRadius(innerRadius)
.outerRadius(outerRadius);
@@ -104,12 +112,14 @@ export default BaseChartComponent.extend({
return this.colors[i];
}
}.bind(this))
- .attr("stroke-dasharray", function(d, i) {
- if (d.value <= 1e-6) {
- return "10,10";
- }
- }.bind(this));
this.bindTooltip(path);
+ path.on("click", function (d) {
+ var data = d.data;
+ if (data.link) {
+ this.tooltip.remove();
+ document.location.href = data.link;
+ }
+ }.bind(this))
// Show labels
if (showLabels) {
@@ -126,27 +136,30 @@ export default BaseChartComponent.extend({
}.bind(this))
.attr("x", lx)
.attr("y", function(d, i) {
- return layout.y1 + 50 + (squareW + margin) * i + layout.margin;
+ return layout.y1 + 75 + (squareW + margin) * i + layout.margin;
})
.attr("width", squareW)
.attr("height", squareW);
select.append("text")
.attr("x", lx + squareW + margin)
.attr("y", function(d, i) {
- return layout.y1 + 50 + (squareW + margin) * i + layout.margin + squareW / 2;
+ return layout.y1 + 80 + (squareW + margin) * i + layout.margin + squareW / 2;
})
.text(function(d) {
- return d.label + ' = ' + d.value;
- });
+ var value = d.value;
+ if (this.get("type") == "memory") {
+ value = Converter.memoryToSimpliedUnit(value);
+ }
+ return d.label + ' = ' + value + suffix;
+ }.bind(this));
}
if (middleLabel) {
var highLightColor = this.colors[0];
g.append("text").text(middleLabel).attr("x", cx).attr("y", cy - 10).
attr("class", "donut-highlight-text").attr("fill", highLightColor);
- g.append("text").text(middleValue).attr("x", cx).attr("y", cy + 20).
- attr("class", "donut-highlight-text").attr("fill", highLightColor).
- style("font-size", "30px");
+ g.append("text").text(middleValue).attr("x", cx).attr("y", cy + 15).
+ attr("class", "donut-highlight-sub").attr("fill", highLightColor);
}
path.transition()
@@ -154,8 +167,22 @@ export default BaseChartComponent.extend({
.attrTween('d', tweenPie);
},
+ _dataChange: Ember.observer("data", function() {
+ this.chart.g.selectAll("*").remove();
+ this.renderDonutChart(this.get("data"), this.get("title"), this.get("showLabels"),
+ this.get("middleLabel"), this.get("middleValue"));
+ }),
+
draw: function() {
this.initChart();
+
+ var colorTargets = this.get("colorTargets");
+ if (colorTargets) {
+ var colorTargetReverse = Boolean(this.get("colorTargetReverse"));
+ var targets = colorTargets.split(" ");
+ this.colors = ColorUtils.getColors(this.get("data").length, targets, colorTargetReverse);
+ }
+
this.renderDonutChart(this.get("data"), this.get("title"), this.get("showLabels"),
this.get("middleLabel"), this.get("middleValue"));
},
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/nodes-heatmap.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/nodes-heatmap.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/nodes-heatmap.js
new file mode 100644
index 0000000..af8ceb3
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/nodes-heatmap.js
@@ -0,0 +1,209 @@
+/**
+ * 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.
+ */
+
+import BaseChartComponent from 'yarn-ui/components/base-chart-component';
+import Mock from 'yarn-ui/utils/mock';
+
+export default BaseChartComponent.extend({
+ CELL_WIDTH: 250,
+ SAMPLE_CELL_WIDTH: 100,
+ SAMPLE_HEIGHT: 30,
+ CELL_HEIGHT: 30,
+ CELL_MARGIN: 2,
+ RACK_MARGIN: 20,
+ filter: "",
+
+ bindTP: function(element) {
+ element.on("mouseover", function() {
+ this.tooltip
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ element.style("opacity", 1.0);
+ }.bind(this))
+ .on("mousemove", function() {
+ // Handle pie chart case
+ var text = element.attr("tooltiptext");
+
+ this.tooltip.style("opacity", .9);
+ this.tooltip.html(text)
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mouseout", function() {
+ this.tooltip.style("opacity", 0);
+ element.style("opacity", 0.8);
+ }.bind(this));
+ },
+
+ // data:
+ // [{label=label1, value=value1}, ...]
+ // ...
+ renderCells: function (model, title) {
+ var data = [];
+ model.forEach(function (o) {
+ data.push(o);
+ });
+
+ this.chart.g.remove();
+ this.chart.g = this.chart.svg.append("g");
+ var g = this.chart.g;
+ var layout = this.getLayout();
+ layout.margin = 50;
+
+ let racks = new Set();
+ for (var i = 0; i < data.length; i++) {
+ racks.add(data[i].get("rack"));
+ }
+
+ let racksArray = [];
+ racks.forEach(v => racksArray.push(v));
+
+ var xOffset = layout.margin;
+ var yOffset = layout.margin * 3;
+
+ var colorFunc = d3.interpolate(d3.rgb("#bdddf5"), d3.rgb("#0f3957"));
+
+ var sampleXOffset = (layout.x2 - layout.x1) / 2 - 2.5 * this.SAMPLE_CELL_WIDTH -
+ 2 * this.CELL_MARGIN;
+ var sampleYOffset = layout.margin * 2;
+
+ for (var i = 1; i <= 5; i++) {
+ var ratio = i * 0.2 - 0.1;
+
+ var rect = g.append("rect")
+ .attr("x", sampleXOffset)
+ .attr("y", sampleYOffset)
+ .attr("fill", colorFunc(ratio))
+ .attr("width", this.SAMPLE_CELL_WIDTH)
+ .attr("height", this.SAMPLE_HEIGHT);
+ g.append("text")
+ .text("" + (ratio * 100).toFixed(1) + "% Used")
+ .attr("y", sampleYOffset + this.SAMPLE_HEIGHT / 2 + 5)
+ .attr("x", sampleXOffset + this.SAMPLE_CELL_WIDTH / 2)
+ .attr("class", "heatmap-cell");
+ sampleXOffset += this.CELL_MARGIN + this.SAMPLE_CELL_WIDTH;
+ }
+
+ var chartXOffset = -1;
+
+ for (var i = 0; i < racksArray.length; i++) {
+ var text = g.append("text")
+ .text(racksArray[i])
+ .attr("y", yOffset + this.CELL_HEIGHT / 2 + 5)
+ .attr("x", layout.margin)
+ .attr("class", "heatmap-rack");
+
+ if (-1 == chartXOffset) {
+ chartXOffset = layout.margin + text.node().getComputedTextLength() + 30;
+ }
+
+ xOffset = chartXOffset;
+
+ for (var j = 0; j < data.length; j++) {
+ var rack = data[j].get("rack");
+ var host = data[j].get("nodeHostName");
+
+ if (rack == racksArray[i]) {
+ if (!rack.includes(this.filter) && !host.includes(this.filter)) {
+ this.addNode(g, xOffset, yOffset, colorFunc, data[j], false);
+ var text = g.append("text")
+ .text(host)
+ .attr("y", yOffset + this.CELL_HEIGHT / 2 + 5)
+ .attr("x", xOffset + this.CELL_WIDTH / 2)
+ .attr("class", "heatmap-cell-notselected");
+ } else {
+ this.addNode(g, xOffset, yOffset, colorFunc, data[j], true);
+ g.append("text")
+ .text(host)
+ .attr("y", yOffset + this.CELL_HEIGHT / 2 + 5)
+ .attr("x", xOffset + this.CELL_WIDTH / 2)
+ .attr("class", "heatmap-cell");
+ }
+
+ xOffset += this.CELL_MARGIN + this.CELL_WIDTH;
+ if (xOffset + this.CELL_MARGIN + this.CELL_WIDTH >= layout.x2 -
+ layout.margin) {
+ xOffset = chartXOffset;
+ yOffset = yOffset + this.CELL_MARGIN + this.CELL_HEIGHT;
+ }
+
+ }
+ }
+
+ while (xOffset > chartXOffset && xOffset + this.CELL_MARGIN +
+ this.CELL_WIDTH < layout.x2 - layout.margin) {
+ this.addPlaceholderNode(g, xOffset, yOffset);
+ xOffset += this.CELL_MARGIN + this.CELL_WIDTH;
+ }
+
+ if (xOffset != chartXOffset) {
+ xOffset = chartXOffset;
+ yOffset += this.CELL_MARGIN + this.CELL_HEIGHT;
+ }
+ yOffset += this.RACK_MARGIN;
+ }
+
+ layout.y2 = yOffset + layout.margin;
+ this.adjustMaxHeight(layout.y2);
+ this.renderTitleAndBG(g, title, layout, false);
+ },
+
+ addNode: function (g, xOffset, yOffset, colorFunc, data, selected) {
+ var rect = g.append("rect")
+ .attr("y", yOffset)
+ .attr("x", xOffset)
+ .attr("height", this.CELL_HEIGHT)
+ .attr("fill", colorFunc(data.get("usedMemoryMB") /
+ (data.get("usedMemoryMB") + data.get("availMemoryMB"))))
+ .attr("width", this.CELL_WIDTH)
+ .attr("tooltiptext", data.get("toolTipText"));
+ if (selected) {
+ rect.style("opacity", 0.8);
+ this.bindTP(rect);
+ } else {
+ rect.style("opacity", 0.8);
+ rect.attr("fill", "DimGray");
+ }
+ },
+
+ addPlaceholderNode: function(g, xOffset, yOffset) {
+ var rect = g.append("rect")
+ .attr("y", yOffset)
+ .attr("x", xOffset)
+ .attr("height", this.CELL_HEIGHT)
+ .attr("fill", "grey")
+ .attr("width", this.CELL_WIDTH)
+ .style("opacity", 0.20);
+ },
+
+ draw: function() {
+ this.initChart(true);
+ this.renderCells(this.get("model"), this.get("title"), this.get("textWidth"));
+ },
+
+ didInsertElement: function () {
+ this.draw();
+ },
+
+ actions: {
+ applyFilter: function(event) {
+ this.filter = event.srcElement.value;
+ this.didInsertElement();
+ }
+ }
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/per-app-memusage-by-nodes-stacked-barchart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/per-app-memusage-by-nodes-stacked-barchart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/per-app-memusage-by-nodes-stacked-barchart.js
new file mode 100644
index 0000000..7feb7bb
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/per-app-memusage-by-nodes-stacked-barchart.js
@@ -0,0 +1,88 @@
+/**
+ * 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.
+ */
+
+import StackedBarchart from 'yarn-ui/components/stacked-barchart';
+import Converter from 'yarn-ui/utils/converter';
+
+export default StackedBarchart.extend({
+ getDataForRender: function(containers, nodes) {
+ var arr = [];
+ var nodeToResources = {};
+ nodes.forEach(function(n) {
+ nodeToResources[n.id] =
+ {
+ used: Number(n.get("usedMemoryMB")),
+ avail: Number(n.get("availMemoryMB"))
+ }
+ });
+
+ containers.forEach(function(c) {
+ res = nodeToResources[c.get("assignedNodeId")];
+ if (res) {
+ if (!res.usedByTheApp) {
+ res.usedByTheApp = 0;
+ }
+ res.usedByTheApp += Number(c.get("allocatedMB"));
+ }
+ });
+
+ for (var nodeId in nodeToResources) {
+ var res = nodeToResources[nodeId];
+
+ var subArr = [];
+ var value = res.usedByTheApp ? res.usedByTheApp : 0;
+ subArr.push({
+ value: value,
+ bindText: "This app uses " + Converter.memoryToSimpliedUnit(value) + ". On node=" + nodeId,
+ });
+
+ value = res.used - value;
+ value = Math.max(value, 0);
+ subArr.push({
+ value: value,
+ bindText: "Other applications uses " + Converter.memoryToSimpliedUnit(value) + ". On node=" + nodeId,
+ });
+
+ subArr.push({
+ value: res.avail,
+ bindText: "Free resource " + Converter.memoryToSimpliedUnit(res.avail) + " . On node=" + nodeId
+ });
+
+ arr.push(subArr);
+ }
+
+ console.log(arr);
+
+ return arr;
+ },
+
+ didInsertElement: function() {
+ this.initChart(true);
+
+ this.colors = ["Orange", "Grey", "LimeGreen"];
+
+ var containers = this.get("rmContainers");
+ var nodes = this.get("nodes");
+
+ var data = this.getDataForRender(containers, nodes);
+
+ this.show(
+ data, this.get("title"), ["Used by this app", "Used by other apps",
+ "Available"]);
+ },
+})
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/per-app-ncontainers-by-nodes-stacked-barchart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/per-app-ncontainers-by-nodes-stacked-barchart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/per-app-ncontainers-by-nodes-stacked-barchart.js
new file mode 100644
index 0000000..251f557
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/per-app-ncontainers-by-nodes-stacked-barchart.js
@@ -0,0 +1,67 @@
+/**
+ * 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.
+ */
+
+import StackedBarchart from 'yarn-ui/components/stacked-barchart';
+
+export default StackedBarchart.extend({
+ getDataForRender: function(containers, nodes) {
+ var arr = [];
+ var nodeToContainers = {};
+ nodes.forEach(function(n) {
+ nodeToContainers[n.id] = 0;
+ });
+
+ containers.forEach(function(c) {
+ var nodeId = c.get("assignedNodeId");
+ var n = nodeToContainers[nodeId];
+ if (undefined != n) {
+ nodeToContainers[nodeId] += 1;
+ }
+ });
+
+ for (var nodeId in nodeToContainers) {
+ var n = nodeToContainers[nodeId];
+
+ var subArr = [];
+ subArr.push({
+ value: n,
+ bindText: "This app has " + n + " containers running on node=" + nodeId
+ });
+
+ arr.push(subArr);
+ }
+
+ console.log(arr);
+
+ return arr;
+ },
+
+ didInsertElement: function() {
+ this.initChart(true);
+
+ this.colors = ["Orange", "Grey", "Gainsboro"];
+
+ var containers = this.get("rmContainers");
+ var nodes = this.get("nodes");
+
+ var data = this.getDataForRender(containers, nodes);
+
+ this.show(
+ data, this.get("title"), ["Running containers from this app"]);
+ },
+})
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js
new file mode 100644
index 0000000..3532726
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js
@@ -0,0 +1,69 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import DonutChart from 'yarn-ui/components/donut-chart';
+import BaseUsageDonutChart from 'yarn-ui/components/base-usage-donut-chart';
+import ColorUtils from 'yarn-ui/utils/color-utils';
+import HrefAddressUtils from 'yarn-ui/utils/href-address-utils';
+
+export default BaseUsageDonutChart.extend({
+ colors: d3.scale.category20().range(),
+
+ draw: function() {
+ this.initChart();
+ var usageByQueues = [];
+ var avail = 100;
+
+ this.get("data").forEach(function (queue) {
+ var v = queue.get("absUsedCapacity");
+
+ if (queue.get("isLeafQueue")) {
+ if (v > 1e-2) {
+ usageByQueues.push({
+ label: queue.get("id"),
+ link: HrefAddressUtils.getQueueLink(queue.get("id")),
+ value: v.toFixed(2)
+ });
+
+ avail = avail - v;
+ }
+ }
+ });
+
+ usageByQueues.sort(function(a, b) {
+ return b.value - a.value;
+ });
+
+ usageByQueues = this.mergeLongTails(usageByQueues, 8);
+
+ usageByQueues.push({
+ label: "Available",
+ value: avail.toFixed(4)
+ });
+
+ this.colors = ColorUtils.getColors(usageByQueues.length, ["others", "good"], true);
+
+ this.renderDonutChart(usageByQueues, this.get("title"), this.get("showLabels"),
+ this.get("middleLabel"), "100%", "%");
+ },
+
+ didInsertElement: function() {
+ this.draw();
+ },
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-view.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-view.js
index 2a90771..adedf9a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-view.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-view.js
@@ -90,7 +90,6 @@ export default Ember.Component.extend(ChartUtilsMixin, {
.attr("class", "queue");
circle.on('mouseover', function () {
- circle.style("fill", this.queueColors[1]);
}.bind(this));
circle.on('mouseout', function () {
if (circle != this.queues.selectedQueueCircle) {
@@ -206,7 +205,7 @@ export default Ember.Component.extend(ChartUtilsMixin, {
renderQueueCapacities: function (queue, layout) {
// Render bar chart
- this.renderBarChart(this.charts.g, [{
+ this.renderCells(this.charts.g, [{
label: "Cap",
value: queue.get("capacity")
}, {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/simple-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/simple-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/simple-table.js
index e5da81a..359583d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/simple-table.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/simple-table.js
@@ -1,3 +1,4 @@
+
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -24,6 +25,7 @@ export default Ember.Component.extend({
var ordering = this.get("ordering") ? true : this.get("ordering");
var info = this.get("info") ? true : this.get("info");
var bFilter = this.get("bFilter") ? true : this.get("bFilter");
+ var defaultSearch = this.get("defaultSearch") ? this.get("defaultSearch") : "";
// Defines sorter for the columns if not default.
// Can also specify a custom sorter.
@@ -66,11 +68,14 @@ export default Ember.Component.extend({
console.log(orderArr[0]);
Ember.$('#' + this.get('table-id')).DataTable({
"paging": paging,
- "ordering": ordering,
+ "ordering": ordering,
"info": info,
"bFilter": bFilter,
"order": orderArr,
- "columnDefs": colDefs
+ "columnDefs": colDefs,
+ "oSearch": {
+ "sSearch": defaultSearch
+ }
});
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/stacked-barchart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/stacked-barchart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/stacked-barchart.js
new file mode 100644
index 0000000..4a121fe
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/stacked-barchart.js
@@ -0,0 +1,198 @@
+/**
+ * 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.
+ */
+
+import BaseChartComponent from 'yarn-ui/components/base-chart-component';
+import Mock from 'yarn-ui/utils/mock';
+
+export default BaseChartComponent.extend({
+ MAX_BAR_HEIGHT: 120,
+ MAX_BAR_WIDTH: 30,
+ GAP: 5,
+ filter: "",
+ WIDTH_OF_SAMPLE: 200,
+
+ bindTP: function(element) {
+ element.on("mouseover", function() {
+ this.tooltip
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ element.style("opacity", 1.0);
+ }.bind(this))
+ .on("mousemove", function() {
+ // Handle pie chart case
+ var text = element.attr("tooltiptext");
+
+ this.tooltip.style("opacity", .9);
+ this.tooltip.html(text)
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mouseout", function() {
+ this.tooltip.style("opacity", 0);
+ element.style("opacity", 0.8);
+ }.bind(this));
+
+ element.on("click", function() {
+ if (element.attr("link")) {
+ this.tooltip.remove();
+ document.location.href = element.attr("link");
+ }
+ }.bind(this));
+ },
+
+ printSamples: function(n, layout, g, colorTitles) {
+ var yOffset = layout.margin * 3;
+
+ for (var i = 0; i < n; i++) {
+ var xOffset = layout.x2 - this.WIDTH_OF_SAMPLE - layout.margin;
+ g.append("rect").
+ attr("fill", this.colors[i]).
+ attr("x", xOffset).
+ attr("y", yOffset).
+ attr("width", 20).
+ attr("height", 20);
+
+ g.append("text").
+ attr("x", xOffset + 30).
+ attr("y", yOffset + 10).
+ text(colorTitles[i]);
+
+ yOffset = yOffset + 30;
+ }
+ },
+
+ // data:
+ // [[{value=xx, bindText=xx}, {value=yy, bindText=yy}], [ ... ]]
+ // __________________________________________________ ___________
+ // bar-1 bar-2
+ show: function (data, title, colorTitles) {
+ var width = this.MAX_BAR_WIDTH;
+ var height = this.MAX_BAR_HEIGHT;
+
+ this.chart.g.remove();
+ this.chart.g = this.chart.svg.append("g");
+ var g = this.chart.g;
+ var layout = this.getLayout();
+ layout.margin = 50;
+
+ var nBarPerRow = Math.floor((layout.x2 - layout.x1 - 3 * layout.margin -
+ this.WIDTH_OF_SAMPLE) /
+ (width + this.GAP));
+
+ var xOffset;
+ var yOffset = layout.margin * 2;
+
+ var maxValue = 0;
+ var maxN = 0;
+ for (var i = 0; i < data.length; i++) {
+ var total = 0;
+ for (var j = 0; j < data[i].length; j++) {
+ total += data[i][j].value;
+ }
+
+ if (total > maxValue) {
+ maxValue = total;
+ }
+ if (data[i].length > maxN) {
+ maxN = data[i].length;
+ }
+ }
+
+ // print samples
+ this.printSamples(maxN, layout, g, colorTitles);
+
+ // print data
+ data.sort(function(a, b) {
+ return b[0].value - a[0].value;
+ });
+
+ for (var i = 0; i < data.length; i++) {
+ if (i % nBarPerRow == 0) {
+ xOffset = layout.margin;
+ yOffset += layout.margin + height;
+ }
+
+ var leftTopY = yOffset;
+ for (var j = 0; j < data[i].length; j++) {
+ var dy = data[i][j].value * height / maxValue;
+ if (dy > 0) {
+ leftTopY = leftTopY - dy;
+
+ var node = g.append("rect").
+ attr("fill", this.colors[j]).
+ attr("x", xOffset).
+ attr("y", leftTopY).
+ attr("width", width).
+ attr("height", dy).
+ attr("tooltiptext",
+ (data[i][j].bindText) ? data[i][j].bindText : data[i][j].value).
+ attr("link", data[i][j].link)
+ .style("opacity", 0.8);
+
+ this.bindTP(node);
+ }
+ }
+
+ if (data[i].length == 1) {
+ g.append("text")
+ .text(data[i][0].value)
+ .attr("y", leftTopY - 10)
+ .attr("x", xOffset + width / 2)
+ .attr("class", "heatmap-cell")
+ .style("fill", "black");
+ }
+
+ xOffset += width + this.GAP;
+ }
+
+ layout.y2 = yOffset + layout.margin;
+ this.adjustMaxHeight(layout.y2);
+ this.renderTitleAndBG(g, title, layout, false);
+ },
+
+ draw: function(data, title, textWidth) {
+ this.initChart(true);
+ //Mock.initMockNodesData(this);
+
+ // mock data
+ var arr = [];
+ for (var i = 0; i < 5; i++) {
+ var subArr = [];
+ for (var j = 0; j < Math.random() * 4 + 1; j++) {
+ subArr.push({
+ value : Math.abs(Math.random())
+ });
+ }
+ arr.push(subArr);
+ }
+
+ this.show(
+ arr, this.get("title"));
+ },
+
+ didInsertElement: function () {
+ this.draw();
+ },
+
+ actions: {
+ applyFilter: function(event) {
+ this.filter = event.srcElement.value;
+ this.didInsertElement();
+ }
+ }
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
index 8a2b3de..516b114 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
@@ -105,7 +105,7 @@ export default Ember.Component.extend({
var border = 30;
var singleBarHeight = this.getPerItemHeight();
var gap = this.getPerItemGap();
- var textWidth = 50;
+ var textWidth = 200;
/*
start-time end-time
|--------------------------------------|
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
index 1af98ab..5e7cfa0 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
@@ -18,6 +18,8 @@
import Ember from 'ember';
+const INBETWEEN_HEIGHT = 130;
+
export default Ember.Component.extend({
// Map: <queue-name, queue>
map : undefined,
@@ -124,12 +126,25 @@ export default Ember.Component.extend({
var nodeEnter = node.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
- .on("click", function(d,i){
+ .on("mouseover", function(d,i){
if (d.queueData.get("name") != this.get("selected")) {
- document.location.href = "#/yarn-queue/" + d.queueData.get("name");
+ document.location.href = "#/yarn-queues/" + d.queueData.get("name");
}
- }.bind(this));
- // .on("click", click);
+
+ Ember.run.later(this, function () {
+ var treeWidth = this.maxDepth * 200;
+ var treeHeight = this.numOfLeafQueue * INBETWEEN_HEIGHT;
+ var tree = d3.layout.tree().size([treeHeight, treeWidth]);
+ var diagonal = d3.svg.diagonal()
+ .projection(function(d) { return [d.y, d.x]; });
+
+ this.update(this.treeData, this.treeData, tree, diagonal);
+ }, 100);
+
+ }.bind(this))
+ .on("click", function (d) {
+ document.location.href = "#/yarn-queue/" + d.queueData.get("name");
+ });
nodeEnter.append("circle")
.attr("r", 1e-6)
@@ -148,6 +163,7 @@ export default Ember.Component.extend({
nodeEnter.append("text")
.attr("x", function(d) { return 0; })
.attr("dy", ".35em")
+ .attr("fill", "white")
.attr("text-anchor", function(d) { return "middle"; })
.text(function(d) {
var usedCap = d.queueData.get("usedCapacity");
@@ -161,9 +177,9 @@ export default Ember.Component.extend({
// append queue name
nodeEnter.append("text")
- .attr("x", function(d) { return 40; })
- .attr("dy", ".35em")
- .attr("text-anchor", function(d) { return "start"; })
+ .attr("x", "0px")
+ .attr("dy", "45px")
+ .attr("text-anchor", "middle")
.text(function(d) { return d.name; })
.style("fill-opacity", 1e-6);
@@ -173,14 +189,21 @@ export default Ember.Component.extend({
.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; });
nodeUpdate.select("circle")
- .attr("r", 20)
+ .attr("r", 30)
.attr("href",
function(d) {
return "#/yarn-queues/" + d.queueData.get("name");
})
+ .style("stroke-width", function(d) {
+ if (d.queueData.get("name") == this.get("selected")) {
+ return 7;
+ } else {
+ return 2;
+ }
+ }.bind(this))
.style("stroke", function(d) {
if (d.queueData.get("name") == this.get("selected")) {
- return "red";
+ return "gray";
} else {
return "gray";
}
@@ -239,7 +262,7 @@ export default Ember.Component.extend({
var margin = {top: 20, right: 120, bottom: 20, left: 120};
var treeWidth = this.maxDepth * 200;
- var treeHeight = this.numOfLeafQueue * 80;
+ var treeHeight = this.numOfLeafQueue * INBETWEEN_HEIGHT;
var width = treeWidth + margin.left + margin.right;
var height = treeHeight + margin.top + margin.bottom;
var layout = { };
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/cluster-overview.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/cluster-overview.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/cluster-overview.js
index dc2f6e4..22e6267 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/cluster-overview.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/cluster-overview.js
@@ -20,4 +20,13 @@ import Ember from 'ember';
export default Ember.Controller.extend({
loading: true,
+
+ breadcrumbs: [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: "Cluster Overview",
+ routeName: 'cluster-overview',
+ }]
+
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempt.js
new file mode 100644
index 0000000..a458842
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempt.js
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+ breadcrumbs: Ember.computed("model.attempt.appId", function () {
+ var appId = this.get("model.attempt.appId");
+ return [{
+ text: "Home",
+ routeName: 'application'
+ },{
+ text: "Applications",
+ routeName: 'yarn-apps'
+ }, {
+ text: `App [${appId}]`,
+ routeName: 'yarn-app',
+ model: appId
+ }, {
+ text: "Attempt",
+ }];
+ })
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempts.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempts.js
new file mode 100644
index 0000000..9ebc2a6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempts.js
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+ breadcrumbs: Ember.computed("model.appId", function () {
+ var appId = this.get("model.appId");
+ return [{
+ text: "Home",
+ routeName: 'application'
+ },{
+ text: "Applications",
+ routeName: 'yarn-apps'
+ }, {
+ text: `App [${appId}]`,
+ routeName: 'yarn-app',
+ model: appId
+ }, {
+ text: "Attempts",
+ }];
+ })
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
new file mode 100644
index 0000000..f6b9404
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
@@ -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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+ breadcrumbs: Ember.computed("model.app.id", function () {
+ var appId = this.get("model.app.id");
+ return [{
+ text: "Home",
+ routeName: 'application'
+ },{
+ text: "Applications",
+ routeName: 'yarn-apps'
+ }, {
+ text: `App [${appId}]`,
+ routeName: 'yarn-app',
+ model: appId
+ }];
+ })
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps.js
index dc99fd1..396f83b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps.js
@@ -19,4 +19,13 @@
import Ember from 'ember';
export default Ember.Controller.extend({
+
+ breadcrumbs: [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: "Applications",
+ routeName: 'yarn-apps',
+ }]
+
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-apps.js
new file mode 100644
index 0000000..4bfe9d0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-apps.js
@@ -0,0 +1,39 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+ breadcrumbs: Ember.computed("model.attempt.appId", function () {
+ var nodeInfo = this.get("model.nodeInfo");
+ return [{
+ text: "Home",
+ routeName: 'application'
+ },{
+ text: "Nodes",
+ routeName: 'yarn-nodes'
+ }, {
+ text: `Node [ ${nodeInfo.id} ]`,
+ href: `/#/yarn-node/${nodeInfo.id}/${nodeInfo.addr}`,
+ }, {
+ text: "Applications",
+ }];
+ })
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-containers.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-containers.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-containers.js
new file mode 100644
index 0000000..59c8591
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node-containers.js
@@ -0,0 +1,39 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+ breadcrumbs: Ember.computed("model.nodeInfo", function () {
+ var nodeInfo = this.get("model.nodeInfo");
+ return [{
+ text: "Home",
+ routeName: 'application'
+ },{
+ text: "Nodes",
+ routeName: 'yarn-nodes'
+ }, {
+ text: `Node [ ${nodeInfo.id} ]`,
+ href: `/#/yarn-node/${nodeInfo.id}/${nodeInfo.addr}`,
+ }, {
+ text: "Containers",
+ }];
+ })
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js
new file mode 100644
index 0000000..e505022
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-node.js
@@ -0,0 +1,37 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+ breadcrumbs: Ember.computed("model.attempt.appId", function () {
+ var nodeInfo = this.get("model.nodeInfo");
+ return [{
+ text: "Home",
+ routeName: 'application'
+ },{
+ text: "Nodes",
+ routeName: 'yarn-nodes'
+ }, {
+ text: `Node [ ${nodeInfo.id} ]`,
+ href: `/#/yarn-node/${nodeInfo.id}/${nodeInfo.addr}`,
+ }];
+ })
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes-heatmap.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes-heatmap.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes-heatmap.js
new file mode 100644
index 0000000..fbe77fa
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes-heatmap.js
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+ needReload: true,
+ selectedQueue: undefined,
+
+ breadcrumbs: [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: "Nodes",
+ routeName: 'yarn-nodes',
+ }, {
+ text: "Heatmap",
+ routeName: 'yarn-nodes-heatmap',
+ }]
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js
new file mode 100644
index 0000000..b4bf0f0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-nodes.js
@@ -0,0 +1,33 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+ needReload: true,
+ selectedQueue: undefined,
+
+ breadcrumbs: [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: "Nodes",
+ routeName: 'yarn-nodes',
+ }]
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue-apps.js
new file mode 100644
index 0000000..e7bedd6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue-apps.js
@@ -0,0 +1,46 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+ needReload: true,
+ selectedQueue: undefined,
+
+ breadcrumbs: Ember.computed("model.selected", function () {
+ var queueName = this.get("model.selected");
+
+ return [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: "Queues",
+ routeName: 'yarn-queues',
+ model: 'root'
+ }, {
+ text: `Queue [ ${queueName} ]`,
+ routeName: 'yarn-queue',
+ model: queueName
+ }, {
+ text: "Applications",
+ }];
+
+ }),
+
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue.js
index 38cf352..0b4150f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue.js
@@ -21,4 +21,24 @@ import Ember from 'ember';
export default Ember.Controller.extend({
needReload: true,
selectedQueue: undefined,
+
+ breadcrumbs: Ember.computed("model.selected", function () {
+ var queueName = this.get("model.selected");
+
+ return [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: "Queues",
+ routeName: 'yarn-queues',
+ model: 'root'
+ }, {
+ text: `Queue [ ${queueName} ]`,
+ routeName: 'yarn-queue',
+ model: queueName
+ }];
+
+ }),
+
+
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queues.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queues.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queues.js
new file mode 100644
index 0000000..941e150
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queues.js
@@ -0,0 +1,34 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+ needReload: true,
+ selectedQueue: undefined,
+
+ breadcrumbs: [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: "Queues",
+ routeName: 'yarn-queues',
+ model: 'root'
+ }]
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-services.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-services.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-services.js
new file mode 100644
index 0000000..597962a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-services.js
@@ -0,0 +1,34 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+
+ breadcrumbs: [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: "Applications",
+ routeName: 'yarn-apps',
+ }, {
+ text: "Long Running Services",
+ routeName: 'yarn-services',
+ }]
+
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-metric.js
index 981375a..bc6e27a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-metric.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-metric.js
@@ -125,7 +125,7 @@ export default DS.Model.extend({
});
arr.push({
label: "Available",
- value: this.get("available" + type)
+ value: Math.max(this.get("available" + type), 0)
});
return arr;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
index b913a33..f30d143 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
@@ -30,6 +30,17 @@ export default DS.Model.extend({
hosts: DS.attr('string'),
logsLink: DS.attr('string'),
state: DS.attr('string'),
+ appAttemptId: DS.attr('string'),
+
+ appId: Ember.computed("id",function () {
+ var id = this.get("id");
+ id = id.split("_");
+
+ id[0] = "application";
+ id.pop();
+
+ return id.join("_");
+ }),
attemptStartedTime: function() {
var startTime = this.get("startTime");
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
index a96c17c..0a5df87 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
@@ -36,6 +36,7 @@ export default DS.Model.extend({
unmanagedApplication: DS.attr('string'),
amNodeLabelExpression: DS.attr('string'),
applicationTags: DS.attr('string'),
+ applicationType: DS.attr('string'),
priority: DS.attr('number'),
allocatedMB: DS.attr('number'),
allocatedVCores: DS.attr('number'),
@@ -46,6 +47,9 @@ export default DS.Model.extend({
preemptedResourceVCores: DS.attr('number'),
numNonAMContainerPreempted: DS.attr('number'),
numAMContainerPreempted: DS.attr('number'),
+ clusterUsagePercentage: DS.attr('number'),
+ queueUsagePercentage: DS.attr('number'),
+ currentAppAttemptId: DS.attr('string'),
isFailed: function() {
return this.get('finalStatus') == "FAILED"
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-rm-node.js
index 9a1082c..a15a20f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-rm-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-rm-node.js
@@ -89,4 +89,11 @@ export default DS.Model.extend({
});
return arr;
}.property("availableVirtualCores", "usedVirtualCores"),
+
+ toolTipText: function() {
+ return "<p>Rack: " + this.get("rack") + '</p>' +
+ "<p>Host: " + this.get("nodeHostName") + '</p>' +
+ "<p>Used Memory: " + Math.round(this.get("usedMemoryMB")) + ' MB</p>' +
+ "<p>Available Memory: " + Math.round(this.get("availMemoryMB")) + ' MB</p>';
+ }.property(),
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
index 8f7ce5f..87a018d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
@@ -24,8 +24,15 @@ var Router = Ember.Router.extend({
});
Router.map(function() {
- this.route('yarn-apps');
- this.route('yarn-nodes');
+ this.route('yarn-apps', function () {
+ this.route('apps');
+ this.route('services');
+ });
+ this.route('yarn-nodes', function(){
+ this.route('table');
+ this.route('heatmap');
+ });
+ this.route('yarn-nodes-heatmap');
this.route('yarn-node', { path: '/yarn-node/:node_id/:node_addr' });
this.route('yarn-node-apps', { path: '/yarn-node-apps/:node_id/:node_addr' });
this.route('yarn-node-app',
@@ -37,11 +44,15 @@ Router.map(function() {
this.route('yarn-container-log', { path:
'/yarn-container-log/:node_id/:node_addr/:container_id/:filename' });
this.route('yarn-queue', { path: '/yarn-queue/:queue_name' });
+
this.route('cluster-overview');
this.route('yarn-app', { path: '/yarn-app/:app_id' });
this.route('yarn-app-attempt', { path: '/yarn-app-attempt/:app_attempt_id'});
this.route('error');
this.route('notfound', { path: '*:' });
+ this.route('yarn-app-attempts', { path: '/yarn-app-attempts/:app_id' });
+ this.route('yarn-queues', { path: '/yarn-queues/:queue_name' });
+ this.route('yarn-queue-apps', { path: '/yarn-queue-apps/:queue_name' });
});
export default Router;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
index b7a5754..07b3792 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
@@ -27,6 +27,8 @@ export default Ember.Route.extend({
* error handler page.
*/
error: function (error) {
+ Ember.Logger.log(error.stack);
+
if (error && error.errors[0] &&
error.errors[0].status == 404) {
this.intermediateTransitionTo('/notfound');
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
index 4b4e554..3689274 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
@@ -20,7 +20,14 @@ import Ember from 'ember';
export default Ember.Route.extend({
model() {
- return this.store.findAll('ClusterMetric');
+ return Ember.RSVP.hash({
+ clusterMetrics: this.store.findAll('ClusterMetric'),
+ apps: this.store.query('yarn-app',
+ {
+ state: "RUNNING"
+ }),
+ queues: this.store.findAll('yarn-queue'),
+ });
},
afterModel() {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js
new file mode 100644
index 0000000..1a526c7
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return this.store.query('yarn-app-attempt', { appId: param.app_id}).then(function (attempts) {
+ return {
+ appId: param.app_id,
+ attempts: attempts
+ };
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
index f5384b8..ab84632 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
@@ -22,7 +22,22 @@ export default Ember.Route.extend({
model(param) {
return Ember.RSVP.hash({
app: this.store.find('yarn-app', param.app_id),
- attempts: this.store.query('yarn-app-attempt', { appId: param.app_id})
+
+ rmContainers: this.store.find('yarn-app', param.app_id).then(function(app) {
+ return this.store.query('yarn-app-attempt', {appId: param.app_id}).then(function (attempts) {
+ if (attempts && attempts.get('firstObject')) {
+ var appAttemptId = attempts.get('firstObject').get('appAttemptId');
+ var rmContainers = this.store.query('yarn-container',
+ {
+ app_attempt_id: appAttemptId,
+ is_rm: true
+ });
+ return rmContainers;
+ }
+ }.bind(this));
+ }.bind(this)),
+
+ nodes: this.store.findAll('yarn-rm-node'),
});
}
});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[38/50] [abbrv] hadoop git commit: YARN-5779. [YARN-3368] Addendum
patch to document limits/notes of the new YARN UI . (Sunil G via Sreenath
Somarajapuram)
Posted by su...@apache.org.
YARN-5779. [YARN-3368] Addendum patch to document limits/notes of the new YARN UI . (Sunil G via Sreenath Somarajapuram)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/871c0138
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/871c0138
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/871c0138
Branch: refs/heads/YARN-3368
Commit: 871c0138042747f51008ddb72ba5be6559f862c0
Parents: be71501
Author: Sreenath Somarajapuram <sr...@apache.org>
Authored: Fri Oct 28 18:20:55 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/871c0138/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
index 9f82031..e7853bf 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
@@ -38,6 +38,9 @@ origin (CORS) support.
| `yarn.resourcemanager.webapp.cross-origin.enabled` | true | Enable CORS support for Resource Manager |
| `yarn.nodemanager.webapp.cross-origin.enabled` | true | Enable CORS support for Node Manager |
+Also please ensure that CORS related configurations are enabled in `core-site.xml`.
+Kindly refer [here](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/HttpAuthentication.html)
+
Use it
-------------
Open your browser, go to `rm-address:8088/ui2` and try it!
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[39/50] [abbrv] hadoop git commit: YARN-5598. [YARN-3368] Fix
create-release to be able to generate bits for the new yarn-ui (Wangda Tan
via Sunil G)
Posted by su...@apache.org.
YARN-5598. [YARN-3368] Fix create-release to be able to generate bits for the new yarn-ui (Wangda Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/cfda0c23
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/cfda0c23
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/cfda0c23
Branch: refs/heads/YARN-3368
Commit: cfda0c2312986a7131889567acda2be0f64f77cb
Parents: e18e6a3
Author: sunilg <su...@apache.org>
Authored: Tue Sep 6 23:15:59 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
dev-support/bin/create-release | 2 +-
dev-support/create-release.sh | 144 ------------------------------------
dev-support/docker/Dockerfile | 6 +-
3 files changed, 6 insertions(+), 146 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfda0c23/dev-support/bin/create-release
----------------------------------------------------------------------
diff --git a/dev-support/bin/create-release b/dev-support/bin/create-release
index 0e0ab86..d40fffa 100755
--- a/dev-support/bin/create-release
+++ b/dev-support/bin/create-release
@@ -527,7 +527,7 @@ function makearelease
# shellcheck disable=SC2046
run_and_redirect "${LOGDIR}/mvn_install.log" \
"${MVN}" "${MVN_ARGS[@]}" install \
- -Pdist,src \
+ -Pdist,src,yarn-ui \
"${signflags[@]}" \
-DskipTests -Dtar $(hadoop_native_flags)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfda0c23/dev-support/create-release.sh
----------------------------------------------------------------------
diff --git a/dev-support/create-release.sh b/dev-support/create-release.sh
deleted file mode 100755
index 792a805..0000000
--- a/dev-support/create-release.sh
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/bin/bash
-# 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.
-
-
-# Function to probe the exit code of the script commands,
-# and stop in the case of failure with an contextual error
-# message.
-run() {
- echo "\$ ${@}"
- "${@}"
- exitCode=$?
- if [[ $exitCode != 0 ]]; then
- echo
- echo "Failed! running ${@} in `pwd`"
- echo
- exit $exitCode
- fi
-}
-
-doMD5() {
- MD5CMD="md5sum"
- which $MD5CMD
- if [[ $? != 0 ]]; then
- MD5CMD="md5"
- fi
- run $MD5CMD ${1} > ${1}.md5
-}
-
-# If provided, the created release artifacts will be tagged with it
-# (use RC#, i.e: RC0). Do not use a label to create the final release
-# artifact.
-RC_LABEL=$1
-
-# Extract Hadoop version from POM
-HADOOP_VERSION=`cat pom.xml | grep "<version>" | head -1 | sed 's|^ *<version>||' | sed 's|</version>.*$||'`
-
-# Setup git
-GIT=${GIT:-git}
-
-echo
-echo "*****************************************************************"
-echo
-echo "Hadoop version to create release artifacts: ${HADOOP_VERSION}"
-echo
-echo "Release Candidate Label: ${RC_LABEL}"
-echo
-echo "*****************************************************************"
-echo
-
-if [[ ! -z ${RC_LABEL} ]]; then
- RC_LABEL="-${RC_LABEL}"
-fi
-
-# Get Maven command
-if [ -z "$MAVEN_HOME" ]; then
- MVN=mvn
-else
- MVN=$MAVEN_HOME/bin/mvn
-fi
-
-ARTIFACTS_DIR="target/artifacts"
-
-# git clean to clear any remnants from previous build
-run ${GIT} clean -xdf
-
-# mvn clean for sanity
-run ${MVN} clean
-
-# Create staging dir for release artifacts
-run mkdir -p ${ARTIFACTS_DIR}
-
-# Create RAT report
-run ${MVN} apache-rat:check
-
-# Create SRC and BIN tarballs for release,
-# Using 'install\u2019 goal instead of 'package' so artifacts are available
-# in the Maven local cache for the site generation
-run ${MVN} install -Pdist,src,native,yarn-ui -DskipTests -Dtar
-
-# Create site for release
-run ${MVN} site site:stage -Pdist -Psrc
-run mkdir -p target/staging/hadoop-project/hadoop-project-dist/hadoop-yarn
-run mkdir -p target/staging/hadoop-project/hadoop-project-dist/hadoop-mapreduce
-run cp ./hadoop-common-project/hadoop-common/src/main/docs/releasenotes.html target/staging/hadoop-project/hadoop-project-dist/hadoop-common/
-run cp ./hadoop-common-project/hadoop-common/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-common/
-run cp ./hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-hdfs/
-run cp ./hadoop-yarn-project/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-yarn/
-run cp ./hadoop-mapreduce-project/CHANGES.txt target/staging/hadoop-project/hadoop-project-dist/hadoop-mapreduce/
-run mv target/staging/hadoop-project target/r${HADOOP_VERSION}/
-run cd target/
-run tar czf hadoop-site-${HADOOP_VERSION}.tar.gz r${HADOOP_VERSION}/*
-run cd ..
-
-# Stage RAT report
-find . -name rat.txt | xargs -I% cat % > ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}-rat.txt
-
-# Stage CHANGES.txt files
-run cp ./hadoop-common-project/hadoop-common/CHANGES.txt ${ARTIFACTS_DIR}/CHANGES-COMMON-${HADOOP_VERSION}${RC_LABEL}.txt
-run cp ./hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ${ARTIFACTS_DIR}/CHANGES-HDFS-${HADOOP_VERSION}${RC_LABEL}.txt
-run cp ./hadoop-mapreduce-project/CHANGES.txt ${ARTIFACTS_DIR}/CHANGES-MAPREDUCE-${HADOOP_VERSION}${RC_LABEL}.txt
-run cp ./hadoop-yarn-project/CHANGES.txt ${ARTIFACTS_DIR}/CHANGES-YARN-${HADOOP_VERSION}${RC_LABEL}.txt
-
-# Prepare and stage BIN tarball
-run cd hadoop-dist/target/
-run tar -xzf hadoop-${HADOOP_VERSION}.tar.gz
-run cp -r ../../target/r${HADOOP_VERSION}/* hadoop-${HADOOP_VERSION}/share/doc/hadoop/
-run tar -czf hadoop-${HADOOP_VERSION}.tar.gz hadoop-${HADOOP_VERSION}
-run cd ../..
-run mv hadoop-dist/target/hadoop-${HADOOP_VERSION}.tar.gz ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}.tar.gz
-
-# Stage SRC tarball
-run mv hadoop-dist/target/hadoop-${HADOOP_VERSION}-src.tar.gz ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}-src.tar.gz
-
-# Stage SITE tarball
-run mv target/hadoop-site-${HADOOP_VERSION}.tar.gz ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}-site.tar.gz
-
-# MD5 SRC and BIN tarballs
-doMD5 ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}.tar.gz
-doMD5 ${ARTIFACTS_DIR}/hadoop-${HADOOP_VERSION}${RC_LABEL}-src.tar.gz
-
-run cd ${ARTIFACTS_DIR}
-ARTIFACTS_DIR=`pwd`
-echo
-echo "Congratulations, you have successfully built the release"
-echo "artifacts for Apache Hadoop ${HADOOP_VERSION}${RC_LABEL}"
-echo
-echo "The artifacts for this run are available at ${ARTIFACTS_DIR}:"
-run ls -1 ${ARTIFACTS_DIR}
-echo
-echo "Remember to sign them before staging them on the open"
-echo
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cfda0c23/dev-support/docker/Dockerfile
----------------------------------------------------------------------
diff --git a/dev-support/docker/Dockerfile b/dev-support/docker/Dockerfile
index e66fef2..b64e537 100644
--- a/dev-support/docker/Dockerfile
+++ b/dev-support/docker/Dockerfile
@@ -135,7 +135,11 @@ ENV MAVEN_OPTS -Xms256m -Xmx512m
###
# Install node js tools for web UI frameowkr
###
-RUN apt-get -y install nodejs && ln -s /usr/bin/nodejs /usr/bin/node && apt-get -y install npm && npm install -g bower
+RUN apt-get -y install nodejs && \
+ ln -s /usr/bin/nodejs /usr/bin/node && \
+ apt-get -y install npm && \
+ npm install -g bower && \
+ npm install -g ember-cli
###
# Everything past this point is either not needed for testing or breaks Yetus.
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[28/50] [abbrv] hadoop git commit: YARN-5682. [YARN-3368] Fix maven
build to keep all generated or downloaded files in target folder (Wangda Tan
via Sunil G)
Posted by su...@apache.org.
YARN-5682. [YARN-3368] Fix maven build to keep all generated or downloaded files in target folder (Wangda Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/8d857d6c
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/8d857d6c
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/8d857d6c
Branch: refs/heads/YARN-3368
Commit: 8d857d6c8fb08819a03099a5c97e095130957129
Parents: 6a945cf
Author: sunilg <su...@apache.org>
Authored: Tue Oct 4 21:07:42 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn/hadoop-yarn-ui/pom.xml | 54 ++++++++++++--------
hadoop-yarn-project/hadoop-yarn/pom.xml | 2 +-
2 files changed, 34 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8d857d6c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
index b750a73..440aca9 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
@@ -31,7 +31,7 @@
<properties>
<packaging.type>war</packaging.type>
- <webappDir>src/main/webapp</webappDir>
+ <webappTgtDir>${basedir}/target/src/main/webapp</webappTgtDir>
<node.executable>node</node.executable>
<nodeVersion>v0.12.2</nodeVersion>
<npmVersion>2.10.0</npmVersion>
@@ -84,10 +84,10 @@
<followSymLinks>false</followSymLinks>
<filesets>
<fileset>
- <directory>${basedir}/src/main/webapp/bower_components</directory>
+ <directory>${webappTgtDir}/bower_components</directory>
</fileset>
<fileset>
- <directory>${basedir}/src/main/webapp/node_modules</directory>
+ <directory>${webappTgtDir}/node_modules</directory>
</fileset>
</filesets>
</configuration>
@@ -109,6 +109,33 @@
<build>
<plugins>
+ <!-- prepare source code -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>prepare-source-code</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target>
+ <copy toDir="${basedir}/target/src/main/webapp">
+ <fileset dir="${basedir}/src/main/webapp"/>
+ </copy>
+
+ <copy toDir="${basedir}/target/src/public">
+ <fileset dir="${basedir}/public"/>
+ </copy>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+
<!-- Bower install & grunt build-->
<plugin>
<artifactId>exec-maven-plugin</artifactId>
@@ -121,7 +148,7 @@
<goal>exec</goal>
</goals>
<configuration>
- <workingDirectory>${webappDir}</workingDirectory>
+ <workingDirectory>${webappTgtDir}</workingDirectory>
<executable>npm</executable>
<arguments>
<argument>install</argument>
@@ -135,7 +162,7 @@
<goal>exec</goal>
</goals>
<configuration>
- <workingDirectory>${webappDir}</workingDirectory>
+ <workingDirectory>${webappTgtDir}</workingDirectory>
<executable>bower</executable>
<arguments>
<argument>--allow-root</argument>
@@ -150,7 +177,7 @@
<goal>exec</goal>
</goals>
<configuration>
- <workingDirectory>${webappDir}</workingDirectory>
+ <workingDirectory>${webappTgtDir}</workingDirectory>
<executable>ember</executable>
<arguments>
<argument>build</argument>
@@ -160,21 +187,6 @@
</arguments>
</configuration>
</execution>
- <execution>
- <id>cleanup tmp</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <workingDirectory>${webappDir}</workingDirectory>
- <executable>rm</executable>
- <arguments>
- <argument>-rf</argument>
- <argument>tmp</argument>
- </arguments>
- </configuration>
- </execution>
</executions>
</plugin>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8d857d6c/hadoop-yarn-project/hadoop-yarn/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/pom.xml b/hadoop-yarn-project/hadoop-yarn/pom.xml
index ca78ef8..70b68d7 100644
--- a/hadoop-yarn-project/hadoop-yarn/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/pom.xml
@@ -230,7 +230,6 @@
</profiles>
<modules>
- <module>hadoop-yarn-ui</module>
<module>hadoop-yarn-api</module>
<module>hadoop-yarn-common</module>
<module>hadoop-yarn-server</module>
@@ -238,5 +237,6 @@
<module>hadoop-yarn-site</module>
<module>hadoop-yarn-client</module>
<module>hadoop-yarn-registry</module>
+ <module>hadoop-yarn-ui</module>
</modules>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[21/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup
code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app-attempt.js
deleted file mode 100644
index c5394d0..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app-attempt.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-
-export default DS.JSONAPISerializer.extend({
- internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
-
- if (payload.appAttempt) {
- payload = payload.appAttempt;
- }
-
- var fixedPayload = {
- id: payload.appAttemptId,
- type: primaryModelClass.modelName, // yarn-app
- attributes: {
- startTime: Converter.timeStampToDate(payload.startTime),
- finishedTime: Converter.timeStampToDate(payload.finishedTime),
- containerId: payload.containerId,
- nodeHttpAddress: payload.nodeHttpAddress,
- nodeId: payload.nodeId,
- state: payload.nodeId,
- logsLink: payload.logsLink
- }
- };
-
- return fixedPayload;
- },
-
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- var p = this.internalNormalizeSingleResponse(store,
- primaryModelClass, payload, id, requestType);
- return { data: p };
- },
-
- normalizeArrayResponse(store, primaryModelClass, payload, id,
- requestType) {
- // return expected is { data: [ {}, {} ] }
- var normalizedArrayResponse = {};
-
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = payload.appAttempts.appAttempt.map(singleApp => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleApp, singleApp.id, requestType);
- }, this);
- return normalizedArrayResponse;
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app.js
deleted file mode 100644
index a038fff..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-app.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-
-export default DS.JSONAPISerializer.extend({
- internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- if (payload.app) {
- payload = payload.app;
- }
-
- var fixedPayload = {
- id: id,
- type: primaryModelClass.modelName, // yarn-app
- attributes: {
- appName: payload.name,
- user: payload.user,
- queue: payload.queue,
- state: payload.state,
- startTime: Converter.timeStampToDate(payload.startedTime),
- elapsedTime: Converter.msToElapsedTime(payload.elapsedTime),
- finishedTime: Converter.timeStampToDate(payload.finishedTime),
- finalStatus: payload.finalStatus,
- progress: payload.progress,
- diagnostics: payload.diagnostics,
- amContainerLogs: payload.amContainerLogs,
- amHostHttpAddress: payload.amHostHttpAddress,
- logAggregationStatus: payload.logAggregationStatus,
- unmanagedApplication: payload.unmanagedApplication,
- amNodeLabelExpression: payload.amNodeLabelExpression,
- priority: payload.priority,
- allocatedMB: payload.allocatedMB,
- allocatedVCores: payload.allocatedVCores,
- runningContainers: payload.runningContainers,
- memorySeconds: payload.memorySeconds,
- vcoreSeconds: payload.vcoreSeconds,
- preemptedResourceMB: payload.preemptedResourceMB,
- preemptedResourceVCores: payload.preemptedResourceVCores,
- numNonAMContainerPreempted: payload.numNonAMContainerPreempted,
- numAMContainerPreempted: payload.numAMContainerPreempted
- }
- };
-
- return fixedPayload;
- },
-
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- var p = this.internalNormalizeSingleResponse(store,
- primaryModelClass, payload, id, requestType);
- return { data: p };
- },
-
- normalizeArrayResponse(store, primaryModelClass, payload, id,
- requestType) {
- // return expected is { data: [ {}, {} ] }
- var normalizedArrayResponse = {};
-
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleApp, singleApp.id, requestType);
- }, this);
- return normalizedArrayResponse;
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container-log.js
deleted file mode 100644
index 9e10615..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container-log.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-
-export default DS.JSONAPISerializer.extend({
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- // Convert plain text response into JSON.
- // ID is of the form nodeAddress!containerId!fileName
- var splits = Converter.splitForContainerLogs(id);
- var convertedPayload = {
- id: id,
- type: primaryModelClass.modelName,
- attributes: {
- logs: payload,
- containerID: splits[1],
- logFileName: splits[2]
- }
- };
- return { data: convertedPayload };
- },
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container.js
deleted file mode 100644
index 665b9df..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-container.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-
-export default DS.JSONAPISerializer.extend({
- internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
-
- var fixedPayload = {
- id: payload.containerId,
- type: primaryModelClass.modelName, // yarn-app
- attributes: {
- allocatedMB: payload.allocatedMB,
- allocatedVCores: payload.allocatedVCores,
- assignedNodeId: payload.assignedNodeId,
- priority: payload.priority,
- startedTime: Converter.timeStampToDate(payload.startedTime),
- finishedTime: Converter.timeStampToDate(payload.finishedTime),
- elapsedTime: payload.elapsedTime,
- logUrl: payload.logUrl,
- containerExitStatus: payload.containerExitStatus,
- containerState: payload.containerState,
- nodeHttpAddress: payload.nodeHttpAddress
- }
- };
-
- return fixedPayload;
- },
-
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- var p = this.internalNormalizeSingleResponse(store,
- primaryModelClass, payload, id, requestType);
- return { data: p };
- },
-
- normalizeArrayResponse(store, primaryModelClass, payload, id,
- requestType) {
- // return expected is { data: [ {}, {} ] }
- var normalizedArrayResponse = {};
-
- if (payload && payload.container) {
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = payload.container.map(singleContainer => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleContainer, singleContainer.id, requestType);
- }, this);
- return normalizedArrayResponse;
- }
-
- normalizedArrayResponse.data = [];
- return normalizedArrayResponse;
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-app.js
deleted file mode 100644
index 8b1f152..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-app.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * 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.
- */
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-import Ember from 'ember';
-
-export default DS.JSONAPISerializer.extend({
- internalNormalizeSingleResponse(store, primaryModelClass, payload) {
- if (payload.app) {
- payload = payload.app;
- }
-
- var fixedPayload = {
- id: payload.id,
- type: primaryModelClass.modelName,
- attributes: {
- appId: payload.id,
- state: payload.state,
- user: payload.user,
- containers: payload.containerids
- }
- };
- return fixedPayload;
- },
-
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- // payload is of the form {"app":{}}
- var p = this.internalNormalizeSingleResponse(store,
- primaryModelClass, payload);
- return { data: p };
- },
-
- normalizeArrayResponse(store, primaryModelClass, payload, id,
- requestType) {
- // expected return response is of the form { data: [ {}, {} ] }
- var normalizedArrayResponse = {};
- // payload is of the form { "apps" : { "app": [ {},{},{} ] } }
- if (payload.apps) {
- normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleApp);
- }, this);
- } else {
- // No container reported inside containers.
- // Response of the form { "apps": null }
- normalizedArrayResponse.data = Ember.makeArray({
- id: "dummy",
- type: primaryModelClass.modelName,
- attributes: {}});
- }
- return normalizedArrayResponse;
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-container.js
deleted file mode 100644
index 528f2fe..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node-container.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-import Ember from 'ember';
-
-export default DS.JSONAPISerializer.extend({
- internalNormalizeSingleResponse(store, primaryModelClass, payload) {
- if (payload.container) {
- payload = payload.container;
- }
- var fixedPayload = {
- id: payload.id,
- type: primaryModelClass.modelName,
- attributes: {
- containerId: payload.id,
- state: payload.state,
- user: payload.user,
- diagnostics: payload.diagnostics,
- exitCode: payload.exitCode,
- totalMemoryNeeded: payload.totalMemoryNeededMB,
- totalVCoresNeeded: payload.totalVCoresNeeded,
- containerLogFiles: payload.containerLogFiles
- }
- };
-
- return fixedPayload;
- },
-
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- // payload is of the form {"container":{}}
- var p = this.internalNormalizeSingleResponse(store,
- primaryModelClass, payload);
- return { data: p };
- },
-
- normalizeArrayResponse(store, primaryModelClass, payload, id,
- requestType) {
- // expected return response is of the form { data: [ {}, {} ] }
- var normalizedArrayResponse = {};
- if (payload.containers) {
- // payload is of the form { "containers" : { "container": [ {},{},{} ] } }
- normalizedArrayResponse.data =
- payload.containers.container.map(singleContainer => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleContainer);
- }, this);
- } else {
- // No container reported inside containers.
- // Response of the form { "containers": null }
- normalizedArrayResponse.data = Ember.makeArray({
- id: "dummy",
- type: primaryModelClass.modelName,
- attributes: {}});
- }
- return normalizedArrayResponse;
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node.js
deleted file mode 100644
index 19308e2..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-node.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * 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.
- */
-
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-
-export default DS.JSONAPISerializer.extend({
- internalNormalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- if (payload.nodeInfo) {
- payload = payload.nodeInfo;
- }
-
- var fixedPayload = {
- id: id,
- type: primaryModelClass.modelName,
- attributes: {
- totalVmemAllocatedContainersMB: payload.totalVmemAllocatedContainersMB,
- totalPmemAllocatedContainersMB: payload.totalPmemAllocatedContainersMB,
- totalVCoresAllocatedContainers: payload.totalVCoresAllocatedContainers,
- vmemCheckEnabled: payload.vmemCheckEnabled,
- pmemCheckEnabled: payload.pmemCheckEnabled,
- nodeHealthy: payload.nodeHealthy,
- lastNodeUpdateTime: Converter.timeStampToDate(payload.lastNodeUpdateTime),
- healthReport: payload.healthReport,
- nmStartupTime: Converter.timeStampToDate(payload.nmStartupTime),
- nodeManagerBuildVersion: payload.nodeManagerBuildVersion,
- hadoopBuildVersion: payload.hadoopBuildVersion
- }
- };
- return fixedPayload;
- },
-
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- // payload is of the form {"nodeInfo":{}}
- var p = this.internalNormalizeSingleResponse(store,
- primaryModelClass, payload, id, requestType);
- return { data: p };
- },
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-queue.js
deleted file mode 100644
index ce4d775..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-queue.js
+++ /dev/null
@@ -1,127 +0,0 @@
-import DS from 'ember-data';
-
-export default DS.JSONAPISerializer.extend({
-
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- var children = [];
- if (payload.queues) {
- payload.queues.queue.forEach(function(queue) {
- children.push(queue.queueName);
- });
- }
-
- var includedData = [];
- var relationshipUserData = [];
-
- // update user models
- if (payload.users && payload.users.user) {
- payload.users.user.forEach(function(u) {
- includedData.push({
- type: "YarnUser",
- id: u.username + "_" + payload.queueName,
- attributes: {
- name: u.username,
- queueName: payload.queueName,
- usedMemoryMB: u.resourcesUsed.memory || 0,
- usedVCore: u.resourcesUsed.vCores || 0,
- }
- });
-
- relationshipUserData.push({
- type: "YarnUser",
- id: u.username + "_" + payload.queueName,
- })
- });
- }
-
-
- var fixedPayload = {
- id: id,
- type: primaryModelClass.modelName, // yarn-queue
- attributes: {
- name: payload.queueName,
- parent: payload.myParent,
- children: children,
- capacity: payload.capacity,
- usedCapacity: payload.usedCapacity,
- maxCapacity: payload.maxCapacity,
- absCapacity: payload.absoluteCapacity,
- absMaxCapacity: payload.absoluteMaxCapacity,
- absUsedCapacity: payload.absoluteUsedCapacity,
- state: payload.state,
- userLimit: payload.userLimit,
- userLimitFactor: payload.userLimitFactor,
- preemptionDisabled: payload.preemptionDisabled,
- numPendingApplications: payload.numPendingApplications,
- numActiveApplications: payload.numActiveApplications,
- },
- // Relationships
- relationships: {
- users: {
- data: relationshipUserData
- }
- }
- };
-
- return {
- queue: this._super(store, primaryModelClass, fixedPayload, id, requestType),
- includedData: includedData
- }
- },
-
- handleQueue(store, primaryModelClass, payload, id, requestType) {
- var data = [];
- var includedData = []
- var result = this.normalizeSingleResponse(store, primaryModelClass,
- payload, id, requestType);
-
- data.push(result.queue);
- includedData = includedData.concat(result.includedData);
-
- if (payload.queues) {
- for (var i = 0; i < payload.queues.queue.length; i++) {
- var queue = payload.queues.queue[i];
- queue.myParent = payload.queueName;
- var childResult = this.handleQueue(store, primaryModelClass, queue,
- queue.queueName,
- requestType);
-
- data = data.concat(childResult.data);
- includedData = includedData.concat(childResult.includedData);
- }
- }
-
- return {
- data: data,
- includedData, includedData
- }
- },
-
- normalizeArrayResponse(store, primaryModelClass, payload, id,
- requestType) {
- var normalizedArrayResponse = {};
- var result = this.handleQueue(store,
- primaryModelClass,
- payload.scheduler.schedulerInfo, "root", requestType);
-
- normalizedArrayResponse.data = result.data;
- normalizedArrayResponse.included = result.includedData;
-
- console.log(normalizedArrayResponse);
-
- return normalizedArrayResponse;
-
- /*
- // return expected is { data: [ {}, {} ] }
- var normalizedArrayResponse = {};
-
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
- return this.normalizeSingleResponse(store, primaryModelClass, singleApp, singleApp.id, requestType);
- }, this);
- return normalizedArrayResponse;
- */
- }
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-rm-node.js
deleted file mode 100644
index 6cb9320..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/yarn-rm-node.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * 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.
- */
-
-import Ember from 'ember';
-import DS from 'ember-data';
-import Converter from 'yarn-ui/utils/converter';
-
-export default DS.JSONAPISerializer.extend({
- internalNormalizeSingleResponse(store, primaryModelClass, payload, id) {
- if (payload.node) {
- payload = payload.node;
- }
-
- var fixedPayload = {
- id: id,
- type: primaryModelClass.modelName,
- attributes: {
- rack: payload.rack,
- state: payload.state,
- nodeHostName: payload.nodeHostName,
- nodeHTTPAddress: payload.nodeHTTPAddress,
- lastHealthUpdate: Converter.timeStampToDate(payload.lastHealthUpdate),
- healthReport: payload.healthReport,
- numContainers: payload.numContainers,
- usedMemoryMB: payload.usedMemoryMB,
- availMemoryMB: payload.availMemoryMB,
- usedVirtualCores: payload.usedVirtualCores,
- availableVirtualCores: payload.availableVirtualCores,
- version: payload.version,
- nodeLabels: payload.nodeLabels
- }
- };
- return fixedPayload;
- },
-
- normalizeSingleResponse(store, primaryModelClass, payload, id,
- requestType) {
- // payload is of the form {"nodeInfo":{}}
- var p = this.internalNormalizeSingleResponse(store,
- primaryModelClass, payload, id);
- return { data: p };
- },
-
- normalizeArrayResponse(store, primaryModelClass, payload, id,
- requestType) {
- // expected response is of the form { data: [ {}, {} ] }
- var normalizedArrayResponse = {};
- if (payload.nodes) {
- // payload is of the form { "nodes": { "node": [ {},{},{} ] } }
- normalizedArrayResponse.data = payload.nodes.node.map(singleNode => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleNode, singleNode.id);
- }, this);
- } else {
- normalizedArrayResponse.data = Ember.makeArray({
- id: "dummy",
- type: primaryModelClass.modelName,
- attributes: {}});
- }
- return normalizedArrayResponse;
- }
-});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/styles/app.css
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/styles/app.css b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/styles/app.css
deleted file mode 100644
index e1ff994..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/styles/app.css
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- Over all style
- */
-text {
- font: 12px sans-serif;
-}
-
-text.small {
- font: 8px sans-serif;
-}
-
-html, body
-{
- margin: 0px;
- padding: 0px;
- height: 100%;
- width: 100%;
-}
-
-/*
- queue's style (left banner of queues)
- */
-
-text.queue {
- font-family : sans-serif;
- font-size : 15px;
- fill : gray;
-}
-
-path.queue {
- stroke: gray;
- fill: none;
-}
-
-circle.queue {
- r: 10;
- fill: Steelblue;
-}
-
-/*
- background style
- */
-line.grid {
- stroke: WhiteSmoke;
-}
-
-line.chart {
- stroke: Gray;
-}
-
-/*
- charts styles
- */
-text.chart-title {
- font-size: 30px;
- font-family: sans-serif;
- text-anchor: middle;
- fill: Gray;
-}
-
-text.donut-highlight-text {
- font-size: 20px;
- font-family: sans-serif;
- text-anchor: middle;
- fill: Gray;
- vertical-align: middle;
-}
-
-rect.chart-frame {
- fill: none;
- stroke: gray;
- stroke-dasharray: 10,10;
-}
-
-line.chart-leftbanner {
- stroke-width: 2;
- stroke: gray;
- stroke-dasharray: 10,10;
-}
-
-text.bar-chart-text {
- font-size: 8px;
- font-family: sans-serif;
- vertical-align: middle;
- fill: Gray;;
-}
-
-div.tooltip {
- position: absolute;
- text-align: center;
- /*height: 28px;*/
- padding: 2px;
- font: 12px sans-serif;
- background: lightsteelblue;
- border: 0px;
- border-radius: 8px;
- pointer-events: none;
-}
-
-/*
- * Data table
- */
-
-table.dataTable thead .sorting {
- background-image: url("/assets/images/datatables/sort_both.png");
-}
-table.dataTable thead .sorting_asc {
- background-image: url("/assets/images/datatables/sort_asc.png");
-}
-table.dataTable thead .sorting_desc {
- background-image: url("/assets/images/datatables/sort_desc.png");
-}
-table.dataTable thead .sorting_asc_disabled {
- background-image: url("/assets/images/datatables/sort_asc_disabled.png");
-}
-table.dataTable thead .sorting_desc_disabled {
- background-image: url("/assets/images/datatables/sort_desc_disabled.png");
-}
-
-/*
- * Queue selector
- */
-.node {
- cursor: pointer;
-}
-
-.node circle {
- fill: #fff;
- stroke: steelblue;
- stroke-width: 3px;
-}
-
-.node text {
- font: 12px sans-serif;
-}
-
-.link {
- fill: none;
- stroke: #ccc;
- stroke-width: 2px;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
deleted file mode 100644
index a9de203..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/application.hbs
+++ /dev/null
@@ -1,23 +0,0 @@
-<nav class="navbar navbar-default">
- <div class="container-fluid">
- <!-- Brand and toggle get grouped for better mobile display -->
- <div class="navbar-header">
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- <a class="navbar-brand" href="#">Apache Hadoop YARN</a>
- </div>
-
- <!-- Collect the nav links, forms, and other content for toggling -->
- <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
- <ul class="nav navbar-nav">
- {{outputMainMenu}}
- </ul>
- </div><!-- /.navbar-collapse -->
- </div><!-- /.container-fluid -->
-</nav>
-
-{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/cluster-overview.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/cluster-overview.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/cluster-overview.hbs
deleted file mode 100644
index 81c11e9..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/cluster-overview.hbs
+++ /dev/null
@@ -1,56 +0,0 @@
-<div class="row">
- <div class="col-lg-3 container-fluid" id="finishedapps-donut-chart">
- {{donut-chart data=model.firstObject.getFinishedAppsDataForDonutChart
- title="Finished Apps"
- showLabels=true
- parentId="finishedapps-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
-
- <div class="col-lg-3 container-fluid" id="runningapps-donut-chart">
- {{donut-chart data=model.firstObject.getRunningAppsDataForDonutChart
- title="Running Apps"
- showLabels=true
- parentId="runningapps-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
-</div>
-
-<hr>
-
-<div class="row">
- <div class="col-lg-3 container-fluid" id="nodes-donut-chart">
- {{donut-chart data=model.firstObject.getNodesDataForDonutChart
- title="Node Managers"
- showLabels=true
- parentId="nodes-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
-</div>
-
-<hr>
-
-<div class="row">
- <div class="col-lg-3 container-fluid" id="mem-donut-chart">
- {{donut-chart data=model.firstObject.getMemoryDataForDonutChart
- title="Resource - Memory"
- showLabels=true
- parentId="mem-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
-
- <div class="col-lg-3 container-fluid" id="vcore-donut-chart">
- {{donut-chart data=model.firstObject.getVCoreDataForDonutChart
- title="Resource - VCores"
- showLabels=true
- parentId="vcore-donut-chart"
- ratio=0.6
- maxHeight=350}}
- </div>
-</div>
-
-{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/.gitkeep
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-attempt-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-attempt-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-attempt-table.hbs
deleted file mode 100644
index 633d363..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-attempt-table.hbs
+++ /dev/null
@@ -1,28 +0,0 @@
-<table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
- <tbody>
- <tr>
- <td>Application Attempt Id</td>
- <td>{{attempt.id}}</td>
- </tr>
- <tr>
- <td>Start Time</td>
- <td>{{attempt.startTime}}</td>
- </tr>
- <tr>
- <td>AM Container Id</td>
- <td>{{attempt.containerId}}</td>
- </tr>
- <tr>
- <td>AM Node Web UI</td>
- <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
- </tr>
- <tr>
- <td>AM Node Id</td>
- <td>{{attempt.nodeId}}</td>
- </tr>
- <tr>
- <td>Log</td>
- <td><a href={{attempt.logsLink}}>link</a></td>
- </tr>
- </tbody>
-</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-table.hbs
deleted file mode 100644
index 92e9d05..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/app-table.hbs
+++ /dev/null
@@ -1,62 +0,0 @@
-<table id={{table-id}} class="display table table-striped table-bordered" cellspacing="0" width="100%">
- <thead>
- <tr>
- <th>Application ID</th>
- <th>Name</th>
- <th>User</th>
- <th>Queue</th>
- <th>State</th>
- <th>Final Status</th>
- <th>Start Time</th>
- <th>Elapsed Time</th> <!-- idx = 7 -->
- <th>Finished Time</th>
- <th>Priority</th>
- <th>Progress</th>
- </tr>
- </thead>
- <tbody>
- {{#if arr}}
- {{#each arr as |app|}}
- <tr>
- <td><a href="yarnApp/{{app.id}}">{{app.id}}</a></td>
- <td>{{app.appName}}</td>
- <td>{{app.user}}</td>
- <td>{{app.queue}}</td>
- <td>{{app.state}}</td>
- <td><span class={{app.finalStatusStyle}}>{{app.finalStatus}}</span></td>
- <td>{{app.startTime}}</td>
- <td>{{app.elapsedTime}}</td>
- <td>{{app.finishedTime}}</td>
- <td>{{app.priority}}</td>
- <td>
- <div class="progress" style="margin-bottom: 0;">
- <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style={{app.progressStyle}}>
- {{app.progress}}%
- </div>
- </div>
- </td>
- </tr>
- {{/each}}
- {{else}}
- <tr>
- <td><a href="yarnApp/{{app.id}}">{{app.id}}</a></td>
- <td>{{app.appName}}</td>
- <td>{{app.user}}</td>
- <td>{{app.queue}}</td>
- <td>{{app.state}}</td>
- <td><span class={{app.finalStatusStyle}}>{{app.finalStatus}}</span></td>
- <td>{{app.startTime}}</td>
- <td>{{app.elapsedTime}}</td>
- <td>{{app.finishedTime}}</td>
- <td>{{app.priority}}</td>
- <td>
- <div class="progress" style="margin-bottom: 0;">
- <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style={{app.progressStyle}}>
- {{app.progress}}%
- </div>
- </div>
- </td>
- </tr>
- {{/if}}
- </tbody>
-</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/container-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/container-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/container-table.hbs
deleted file mode 100644
index 70d3fc4..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/container-table.hbs
+++ /dev/null
@@ -1,36 +0,0 @@
-<table id="container-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
- <tbody>
- <tr>
- <td>Start Time</td>
- <td>{{container.startedTime}}</td>
- </tr>
- <tr>
- <td>Finished Time</td>
- <td>{{container.finishedTime}}</td>
- </tr>
- <tr>
- <td>Elapsed Time</td>
- <td>{{container.elapsedTime}}</td>
- </tr>
- <tr>
- <td>Priority</td>
- <td>{{container.priority}}</td>
- </tr>
- <tr>
- <td>Log</td>
- <td><a href={{container.logUrl}}>link</a></td>
- </tr>
- <tr>
- <td>Exit Status</td>
- <td>{{container.containerExitStatus}}</td>
- </tr>
- <tr>
- <td>State</td>
- <td>{{container.containerState}}</td>
- </tr>
- <tr>
- <td>NodeManager UI</td>
- <td>{{container.nodeHttpAddress}}</td>
- </tr>
- </tbody>
-</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-configuration-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-configuration-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-configuration-table.hbs
deleted file mode 100644
index fb9f1a0..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-configuration-table.hbs
+++ /dev/null
@@ -1,40 +0,0 @@
-<table id="queue-configuration-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
- <thead>
- <tr>
- <td><b>Configurations</b></td>
- <td>Value</td>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>Queue Name</td>
- <td>{{queue.id}}</td>
- </tr>
- <tr>
- <td>Configured Capacity</td>
- <td>{{queue.capacity}}</td>
- </tr>
- <tr>
- <td>Configured Max Capacity</td>
- <td>{{queue.maxCapacity}}</td>
- </tr>
- <tr>
- <td>State</td>
- <td>{{queue.state}}</td>
- </tr>
- {{#if queue.isLeafQueue}}
- <tr>
- <td>User Limit Percent</td>
- <td>{{queue.userLimit}}</td>
- </tr>
- <tr>
- <td>User Limit Factor</td>
- <td>{{queue.userLimitFactor}}</td>
- </tr>
- <tr>
- <td>Preemption Disabled</td>
- <td>{{queue.preemptionDisabled}}</td>
- </tr>
- {{/if}}
- </tbody>
-</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-navigator.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-navigator.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-navigator.hbs
deleted file mode 100644
index 4ef22902..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/queue-navigator.hbs
+++ /dev/null
@@ -1,18 +0,0 @@
-<div class="row">
- <div class="col-lg-4">
- <select class="js-example-basic-single" width="100%" id="queue-name-selector">
- {{item-selector element-id="queue-name-selector" prefix="Queue : " model=model}}
- </select>
- </div>
-</div><!-- /.row -->
-
-<!-- queue selector -->
-<div class="row">
- <div class="col-md-12 container-fluid" id="tree-selector-container">
- {{tree-selector model=model parentId="tree-selector-container" selected=selected}}
- </div>
-</div>
-
-<hr>
-
-{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/timeline-view.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/timeline-view.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/timeline-view.hbs
deleted file mode 100644
index 657f6e8..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/components/timeline-view.hbs
+++ /dev/null
@@ -1,35 +0,0 @@
-<div class="col-md-12 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">
- {{#if attemptModel}}
- Application Attempts
- {{else}}
- Containers
- {{/if}}
- </div>
- <div class="panel-body">
- <div class="col-md-8 container-fluid" id={{parent-id}}>
- </div>
-
- <!-- diag info -->
- <div class="col-md-4 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">
- {{#if selected.link}}
- <a href={{selected.link}}>{{selected.id}}</a>
- {{else}}
- {{selected.id}}
- {{/if}}
- </div>
- {{#if attemptModel}}
- {{app-attempt-table attempt=selected}}
- {{else}}
- {{container-table container=selected}}
- {{/if}}
- </div>
- </div>
- </div>
- </div>
-</div>
-
-{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/error.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/error.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/error.hbs
deleted file mode 100644
index c546bf7..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/error.hbs
+++ /dev/null
@@ -1,19 +0,0 @@
-{{!--
- 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.
---}}
-
-<h3 align = "center">Sorry, Error Occured.</h3>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/notfound.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/notfound.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/notfound.hbs
deleted file mode 100644
index 588ea44..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/notfound.hbs
+++ /dev/null
@@ -1,20 +0,0 @@
-{{!--
- 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.
---}}
-
-<h2 align = "center">404, Not Found</h2>
-<h4 align = "center">Please Check your URL</h4>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app-attempt.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app-attempt.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app-attempt.hbs
deleted file mode 100644
index afcfa4f..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app-attempt.hbs
+++ /dev/null
@@ -1,12 +0,0 @@
-<div class="container-fluid">
- <div class="row">
- {{app-attempt-table attempt=model.attempt}}
- </div>
-
- <!-- containers table -->
- <div class="row">
- {{timeline-view parent-id="containers-timeline-div" my-id="timeline-view" height="400" rmModel=model.rmContainers tsModel=model.tsContainers label="shortAppAttemptId" attemptModel=false}}
- </div>
-</div>
-
-{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app.hbs
deleted file mode 100644
index 0ba6749..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-app.hbs
+++ /dev/null
@@ -1,145 +0,0 @@
-<div class="container-fluid">
- <!-- app table -->
- <div class="row">
- <div class="col-md-12 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">
- Application Basic Information
- </div>
- {{app-table table-id="app-table" app=model.app}}
- </div>
- </div>
- </div>
-
- <!-- diag info and other infos -->
- <div class="row">
- <!-- diag info -->
- <div class="col-md-4 container-fluid">
- {{#if model.app.isFailed}}
- <div class="panel panel-danger">
- <div class="panel-heading">
- Diagnostics
- </div>
- <div class="panel-body">{{model.app.diagnostics}}</div>
- </div>
- {{else}}
- <div class="panel panel-default">
- <div class="panel-body">
- Diagnostics
- </div>
- <div class="panel-footer">{{model.app.diagnostics}}</div>
- </div>
- {{/if}}
- </div>
-
- <div class="col-md-5 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">Scheduling Info</div>
- <table class="table">
- <tbody>
- <tr>
- <td>Allocated Resource</td>
- <td>{{model.app.allocatedResource}}</td>
- </tr>
- <tr>
- <td>Running Containers</td>
- <td>{{model.app.runningContainers}}</td>
- </tr>
- <tr>
- <td>Preempted Resource</td>
- <td>{{model.app.preemptedResource}}</td>
- </tr>
- <tr>
- <td>Num Non-AM container preempted</td>
- <td>{{model.app.numAMContainerPreempted}}</td>
- </tr>
- <tr>
- <td>Num AM container preempted</td>
- <td>{{model.app.numAMContainerPreempted}}</td>
- </tr>
- <tr>
- <td>Aggregated Resource Usage</td>
- <td>{{model.app.aggregatedResourceUsage}}</td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
-
- <!-- other info -->
- <div class="col-md-3 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">Other Info</div>
- <table class="table">
- <tbody>
- <tr>
- <td>AM Container Log</td>
- <td><a href={{model.app.amContainerLogs}}>Link</a></td>
- </tr>
- <tr>
- <td>AM Host Http Addr</td>
- <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
- </tr>
- <tr>
- <td>Log Aggregation Status</td>
- <td>{{model.app.logAggregationStatus}}</td>
- </tr>
- <tr>
- <td>Is Unmanaged AM</td>
- <td>{{model.app.unmanagedApplication}}</td>
- </tr>
- <tr>
- <td>AM Node Label Expression</td>
- <td>{{model.app.amNodeLabelExpression}}</td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </div>
-
-<!--
- <div class="row">
- <div class="col-md-12 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">
- Application Attempts
- </div>
- <table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
- <thead>
- <tr>
- <th>Start Time</th>
- <th>Master ContainerId</th>
- <th>Node Http Address</th>
- <th>Node Id</th>
- <th>Logs Link</th>
- </tr>
- </thead>
- <tbody>
- {{#each model.attempts as |attempt|}}
- <tr>
- <td>{{attempt.startTime}}</td>
- <td>{{attempt.containerId}}</td>
- <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
- <td>{{attempt.nodeId}}</td>
- <td><a href={{attempt.logsLink}}>link</a></td>
- </tr>
- {{/each}}
- </tbody>
- </table>
- </div>
- </div>
- </div>
--->
- <!-- timeline view of children -->
- <div class="row">
- {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
- </div>
-</div>
-
-<!--
-{{simple-table table-id="app-attempt-table" paging=false bFilter=false}}
--->
-
-
-{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
deleted file mode 100644
index 3a79080..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-apps.hbs
+++ /dev/null
@@ -1,3 +0,0 @@
-{{app-table table-id="apps-table" arr=model}}
-{{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc" colTypes="natural elapsed-time" colTargets="0 7"}}
-{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-container-log.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-container-log.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-container-log.hbs
deleted file mode 100644
index 9cc3b0f..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-container-log.hbs
+++ /dev/null
@@ -1,36 +0,0 @@
-{{!--
- 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.
---}}
-
-<div class="col-md-12 container-fluid">
- {{node-menu path="yarnContainerLog" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
- <div class="col-md-10">
- <div class="panel panel-default">
- <div class="panel-heading">
- <h5 align="center"><b>{{model.containerLog.logFileName}} for {{model.containerLog.containerID}}</b></h5>
- </div>
- <div class="panel-body">
- {{#if model.containerLog.logs}}
- <pre>{{model.containerLog.logs}}</pre>
- {{else}}
- <p>No logs were written in {{model.containerLog.logFileName}}.</p>
- {{/if}}
- </div>
- </div>
- </div>
-</div>
-{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-app.hbs
deleted file mode 100644
index 4da64b8..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-app.hbs
+++ /dev/null
@@ -1,60 +0,0 @@
-{{!--
- 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.
---}}
-
-<div class="col-md-12 container-fluid">
- <div class="row">
- {{node-menu path="yarnNodeApp" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
- <div class="col-md-10 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading"><b>Application Information</b></div>
- <table class="table">
- <tbody>
- <tr>
- <td>Application ID</td>
- <td>{{model.nodeApp.appId}}</td>
- </tr>
- <tr>
- <td>Application State</td>
- <td>{{model.nodeApp.state}}</td>
- </tr>
- <tr>
- <td>User</td>
- <td>{{model.nodeApp.user}}</td>
- </tr>
- </tbody>
- </table>
- </div>
- <table id="node-app-table" class="display table table-striped table-bordered" cellspacing="0">
- <thead>
- <tr>
- <th>Containers for {{model.nodeApp.appId}}</th>
- </tr>
- </thead>
- <tbody>
- {{#each model.nodeApp.containers as |container|}}
- <tr>
- <td><a href="yarnNodeContainer/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container}}">{{container}}</a></td>
- </tr>
- {{/each}}
- </tbody>
- </table>
- {{simple-table table-id="node-app-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
- </div>
- </div>
- </div>
-{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-apps.hbs
deleted file mode 100644
index c195397..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-apps.hbs
+++ /dev/null
@@ -1,51 +0,0 @@
-{{!--
- 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.
---}}
-
-<div class="col-md-12 container-fluid">
- <div class="row">
- {{node-menu path="yarnNodeApps" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
- <div class="col-md-10 container-fluid">
- <table id="node-apps-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
- <thead>
- <tr>
- <th>Application ID</th>
- <th>State</th>
- <th>User</th>
- </tr>
- </thead>
- <tbody>
- {{#if model.apps}}
- {{#each model.apps as |app|}}
- {{#if app.isDummyApp}}
- <tr><td colspan="3" align="center">No apps found on this node</td></tr>
- {{else}}
- <tr>
- <td><a href="yarnNodeApp/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{app.appId}}">{{app.appId}}</a></td>
- <td><span class={{app.appStateStyle}}>{{app.state}}</span></td>
- <td>{{app.user}}</td>
- </tr>
- {{/if}}
- {{/each}}
- {{/if}}
- </tbody>
- </table>
- {{simple-table table-id="node-apps-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
- </div>
- </div>
-</div>
-{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-container.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-container.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-container.hbs
deleted file mode 100644
index fbbb2fc..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-container.hbs
+++ /dev/null
@@ -1,70 +0,0 @@
-{{!--
- 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.
---}}
-
-<div class="col-md-12 container-fluid">
- <div class="row">
- {{node-menu path="yarnNodeContainer" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
- <div class="col-md-10 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading"><b>Container Information</b></div>
- <table class="table">
- <tbody>
- <tr>
- <td>Container ID</td>
- <td>{{model.nodeContainer.containerId}}</td>
- </tr>
- <tr>
- <td>Container State</td>
- <td>{{model.nodeContainer.state}}</td>
- </tr>
- <tr>
- <td>Exit Code</td>
- <td>{{model.nodeContainer.exitCode}}</td>
- </tr>
- <tr>
- <td>Diagnostics</td>
- <td>{{model.nodeContainer.diagnostics}}</td>
- </tr>
- <tr>
- <td>User</td>
- <td>{{model.nodeContainer.user}}</td>
- </tr>
- <tr>
- <td>Total Memory Needed</td>
- <td>{{model.nodeContainer.totalMemoryNeeded}} MB</td>
- </tr>
- <tr>
- <td>Total VCores Needed</td>
- <td>{{model.nodeContainer.totalVCoresNeeded}}</td>
- </tr>
- <tr>
- <td>Link to Logs</td>
- <td>
- {{log-files-comma nodeId=model.nodeInfo.id
- nodeAddr=model.nodeInfo.addr
- containerId=model.nodeContainer.containerId
- logFiles=model.nodeContainer.containerLogFiles}}
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- </div>
-{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-containers.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-containers.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-containers.hbs
deleted file mode 100644
index ca80ccd..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node-containers.hbs
+++ /dev/null
@@ -1,58 +0,0 @@
-{{!--
- 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.
---}}
-
-<div class="col-md-12 container-fluid">
- <div class="row">
- {{node-menu path="yarnNodeContainers" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
- <div class="col-md-10 container-fluid">
- <table id="node-containers-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
- <thead>
- <tr>
- <th>Container ID</th>
- <th>Container State</th>
- <th>User</th>
- <th>Logs</th>
- </tr>
- </thead>
- <tbody>
- {{#if model.containers}}
- {{#each model.containers as |container|}}
- {{#if container.isDummyContainer}}
- <tr><td colspan="4" align="center">No containers found on this node</td></tr>
- {{else}}
- <tr>
- <td><a href="yarnNodeContainer/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container.containerId}}">{{container.containerId}}</a></td>
- <td><span class={{container.containerStateStyle}}>{{container.state}}</span></td>
- <td>{{container.user}}</td>
- <td>
- {{log-files-comma nodeId=model.nodeInfo.id
- nodeAddr=model.nodeInfo.addr
- containerId=container.containerId
- logFiles=container.containerLogFiles}}
- </td>
- </tr>
- {{/if}}
- {{/each}}
- {{/if}}
- </tbody>
- </table>
- {{simple-table table-id="node-containers-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
- </div>
- </div>
-</div>
-{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node.hbs
deleted file mode 100644
index a036076..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-node.hbs
+++ /dev/null
@@ -1,94 +0,0 @@
-{{!--
- 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.
---}}
-
-<div class="col-md-12 container-fluid">
- <div class="row">
- {{node-menu path="yarnNode" nodeId=model.rmNode.id nodeAddr=model.node.id}}
- <div class="col-md-10 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">Node Information</div>
- <table class="table">
- <tbody>
- <tr>
- <td>Total Vmem allocated for Containers</td>
- <td>{{divide num=model.node.totalVmemAllocatedContainersMB den=1024}} GB</td>
- </tr>
- <tr>
- <td>Vmem enforcement enabled</td>
- <td>{{model.node.vmemCheckEnabled}}</td>
- </tr>
- <tr>
- <td>Total Pmem allocated for Containers</td>
- <td>{{divide num=model.node.totalPmemAllocatedContainersMB den=1024}} GB</td>
- </tr>
- <tr>
- <td>Pmem enforcement enabled</td>
- <td>{{model.node.pmemCheckEnabled}}</td>
- </tr>
- <tr>
- <td>Total VCores allocated for Containers</td>
- <td>{{model.node.totalVCoresAllocatedContainers}}</td>
- </tr>
- <tr>
- <td>Node Healthy Status</td>
- <td>{{model.node.nodeHealthy}}</td>
- </tr>
- <tr>
- <td>Last Node Health Report Time</td>
- <td>{{model.node.lastNodeUpdateTime}}</td>
- </tr>
- <tr>
- <td>Node Health Report</td>
- <td>{{model.node.healthReport}}</td>
- </tr>
- <tr>
- <td>Node Manager Start Time</td>
- <td>{{model.node.nmStartupTime}}</td>
- </tr>
- <tr>
- <td>Node Manager Version</td>
- <td>{{model.node.nodeManagerBuildVersion}}</td>
- </tr>
- <tr>
- <td>Hadoop Version</td>
- <td>{{model.node.hadoopBuildVersion}}</td>
- </tr>
- </tbody>
- </table>
- </div>
- <div class="col-lg-4 container-fluid" id="mem-donut-chart">
- {{donut-chart data=model.rmNode.getMemoryDataForDonutChart
- title="Resource - Memory (in MB)"
- showLabels=true
- parentId="mem-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
-
- <div class="col-lg-4 container-fluid" id="vcore-donut-chart">
- {{donut-chart data=model.rmNode.getVCoreDataForDonutChart
- title="Resource - VCores"
- showLabels=true
- parentId="vcore-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
- </div>
- </div>
-</div>
-{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-nodes.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-nodes.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-nodes.hbs
deleted file mode 100644
index bf2a098..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-nodes.hbs
+++ /dev/null
@@ -1,65 +0,0 @@
-{{!--
- 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.
---}}
-
-<table id="nodes-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
- <thead>
- <tr>
- <th>Node Labels</th>
- <th>Rack</th>
- <th>Node State</th>
- <th>Node Address</th>
- <th>Node HTTP Address</th>
- <th>Last Health Update</th>
- <th>Health-Report</th>
- <th>Containers</th>
- <th>Mem Used</th>
- <th>Mem Avail</th>
- <th>VCores Used</th>
- <th>VCores Avail</th>
- <th>Version</th>
- </tr>
- </thead>
- <tbody>
- {{#if model}}
- {{#each model as |node|}}
- {{#if node.isDummyNode}}
- <tr><td colspan="13" align="center">No nodes found on this cluster</td></tr>
- {{else}}
- <tr>
- <td>{{node.nodeLabelsAsString}}</td>
- <td>{{node.rack}}</td>
- <td><span class={{node.nodeStateStyle}}>{{node.state}}</span></td>
- <td>{{node.id}}</td>
- {{node-link nodeId=node.id nodeHTTPAddress=node.nodeHTTPAddress nodeState=node.state}}
- <td>{{node.lastHealthUpdate}}</td>
- <td>{{node.healthReport}}</td>
- <td>{{node.numContainers}}</td>
- <td>{{divide num=node.usedMemoryMB den=1024}} GB</td>
- <td>{{divide num=node.availMemoryMB den=1024}} GB</td>
- <td>{{node.usedVirtualCores}}</td>
- <td>{{node.availableVirtualCores}}</td>
- <td>{{node.version}}</td>
- </tr>
- {{/if}}
- {{/each}}
- {{/if}}
- </tbody>
-</table>
-
-{{simple-table table-id="nodes-table" bFilter=true}}
-{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-queue.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-queue.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-queue.hbs
deleted file mode 100644
index 11bb6f4..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/templates/yarn-queue.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-<div class="container-fluid">
- {{queue-navigator model=model.queues selected=model.selected}}
-</div>
-
-<div class="row">
- <div class="col-lg-3 container-fluid">
- {{queue-configuration-table queue=model.selectedQueue}}
- </div>
-
- <div class="col-lg-3 container-fluid" id="capacity-bar-chart">
- {{bar-chart data=model.selectedQueue.capacitiesBarChartData
- title="Queue Capacities"
- parentId="capacity-bar-chart"
- textWidth=150
- ratio=0.5
- maxHeight=350}}
- </div>
-
-{{#if model.selectedQueue.hasUserUsages}}
- <div class="col-lg-3 container-fluid" id="userusage-donut-chart">
- {{donut-chart data=model.selectedQueue.userUsagesDonutChartData
- title="User Usages"
- showLabels=true
- parentId="userusage-donut-chart"
- maxHeight=350}}
- </div>
-{{/if}}
-
- <div class="col-lg-3 container-fluid" id="numapplications-donut-chart">
- {{donut-chart data=model.selectedQueue.numOfApplicationsDonutChartData
- title="Running Apps"
- showLabels=true
- parentId="numapplications-donut-chart"
- ratio=0.5
- maxHeight=350}}
- </div>
-</div>
-
-<hr>
-
-<div class="row">
- <div class="col-md-12 container-fluid">
- {{app-table table-id="apps-table" arr=model.apps}}
- {{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
- </div>
-</div>
-
-{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
deleted file mode 100644
index 0f49a58..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/converter.js
+++ /dev/null
@@ -1,91 +0,0 @@
-import Constants from 'yarn-ui/constants';
-
-export default {
- containerIdToAttemptId: function(containerId) {
- if (containerId) {
- var arr = containerId.split('_');
- var attemptId = ["appattempt", arr[1],
- arr[2], this.padding(arr[3], 6)];
- return attemptId.join('_');
- }
- },
- attemptIdToAppId: function(attemptId) {
- if (attemptId) {
- var arr = attemptId.split('_');
- var appId = ["application", arr[1],
- arr[2]].join('_');
- return appId;
- }
- },
- padding: function(str, toLen=2) {
- str = str.toString();
- if (str.length >= toLen) {
- return str;
- }
- return '0'.repeat(toLen - str.length) + str;
- },
- resourceToString: function(mem, cpu) {
- mem = Math.max(0, mem);
- cpu = Math.max(0, cpu);
- return mem + " MBs, " + cpu + " VCores";
- },
- msToElapsedTime: function(timeInMs) {
- var sec_num = timeInMs / 1000; // don't forget the second param
- var hours = Math.floor(sec_num / 3600);
- var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
- var seconds = sec_num - (hours * 3600) - (minutes * 60);
-
- var timeStrArr = [];
-
- if (hours > 0) {
- timeStrArr.push(hours + ' Hrs');
- }
- if (minutes > 0) {
- timeStrArr.push(minutes + ' Mins');
- }
- if (seconds > 0) {
- timeStrArr.push(Math.round(seconds) + " Secs");
- }
- return timeStrArr.join(' : ');
- },
- elapsedTimeToMs: function(elapsedTime) {
- elapsedTime = elapsedTime.toLowerCase();
- var arr = elapsedTime.split(' : ');
- var total = 0;
- for (var i = 0; i < arr.length; i++) {
- if (arr[i].indexOf('hr') > 0) {
- total += parseInt(arr[i].substring(0, arr[i].indexOf(' '))) * 3600;
- } else if (arr[i].indexOf('min') > 0) {
- total += parseInt(arr[i].substring(0, arr[i].indexOf(' '))) * 60;
- } else if (arr[i].indexOf('sec') > 0) {
- total += parseInt(arr[i].substring(0, arr[i].indexOf(' ')));
- }
- }
- return total * 1000;
- },
- timeStampToDate: function(timeStamp) {
- var dateTimeString = moment(parseInt(timeStamp)).format("YYYY/MM/DD HH:mm:ss");
- return dateTimeString;
- },
- dateToTimeStamp: function(date) {
- if (date) {
- var ts = moment(date, "YYYY/MM/DD HH:mm:ss").valueOf();
- return ts;
- }
- },
- splitForContainerLogs: function(id) {
- if (id) {
- var splits = id.split(Constants.PARAM_SEPARATOR);
- var splitLen = splits.length;
- if (splitLen < 3) {
- return null;
- }
- var fileName = splits[2];
- var index;
- for (index = 3; index < splitLen; index++) {
- fileName = fileName + Constants.PARAM_SEPARATOR + splits[index];
- }
- return [splits[0], splits[1], fileName];
- }
- },
-};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
deleted file mode 100644
index a9a5f7f..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/utils/sorter.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import Converter from 'yarn-ui/utils/converter';
-import Ember from 'ember';
-
-export default {
- _initElapsedTimeSorter: function() {
- Ember.$.extend(Ember.$.fn.dataTableExt.oSort, {
- "elapsed-time-pre": function (a) {
- return Converter.padding(Converter.elapsedTimeToMs(a), 20);
- },
- });
- },
-
- _initNaturalSorter: function() {
- Ember.$.extend(Ember.$.fn.dataTableExt.oSort, {
- "natural-asc": function (a, b) {
- return naturalSort(a,b);
- },
- "natural-desc": function (a, b) {
- return naturalSort(a,b) * -1;
- },
- });
- },
-
- initDataTableSorter: function() {
- this._initElapsedTimeSorter();
- this._initNaturalSorter();
- },
-};
-
-/**
- * Natural sort implementation.
- * Typically used to sort application Ids'.
- */
-function naturalSort(a, b) {
- var diff = a.length - b.length;
- if (diff != 0) {
- var splitA = a.split("_");
- var splitB = b.split("_");
- if (splitA.length != splitB.length) {
- return a.localeCompare(b);
- }
- for (var i = 1; i < splitA.length; i++) {
- var splitdiff = splitA[i].length - splitB[i].length;
- if (splitdiff != 0) {
- return splitdiff;
- }
- var splitCompare = splitA[i].localeCompare(splitB[i]);
- if (splitCompare != 0) {
- return splitCompare;
- }
- }
- return diff;
- }
- return a.localeCompare(b);
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
deleted file mode 100644
index de66650..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/bower.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "yarn-ui",
- "dependencies": {
- "ember": "2.0.1",
- "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.4",
- "ember-cli-test-loader": "ember-cli-test-loader#0.1.3",
- "ember-data": "2.0.0",
- "ember-load-initializers": "ember-cli/ember-load-initializers#0.1.6",
- "ember-qunit": "0.4.9",
- "ember-qunit-notifications": "0.0.7",
- "ember-resolver": "~0.1.18",
- "jquery": "1.11.3",
- "loader.js": "ember-cli/loader.js#3.2.1",
- "qunit": "~1.18.0",
- "bootstrap": "~3.3.2",
- "d3": "~3.5.6",
- "datatables": "~1.10.8",
- "spin.js": "~2.3.2",
- "momentjs": "~2.10.6",
- "select2": "4.0.0"
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
deleted file mode 100644
index bb4f8d2..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/config/environment.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/* jshint node: true */
-
-module.exports = function(environment) {
- var ENV = {
- modulePrefix: 'yarn-ui',
- environment: environment,
- baseURL: '/',
- locationType: 'auto',
- EmberENV: {
- FEATURES: {
- // Here you can enable experimental features on an ember canary build
- // e.g. 'with-controller': true
- }
- },
- APP: {
- // Here you can pass flags/options to your application instance
- // when it is created
- }
- };
-
- if (environment === 'development') {
- // ENV.APP.LOG_RESOLVER = true;
- // ENV.APP.LOG_ACTIVE_GENERATION = true;
- // ENV.APP.LOG_TRANSITIONS = true;
- // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
- // ENV.APP.LOG_VIEW_LOOKUPS = true;
- }
-
- if (environment === 'test') {
- // Testem prefers this...
- ENV.baseURL = '/';
- ENV.locationType = 'none';
-
- // keep test console output quieter
- ENV.APP.LOG_ACTIVE_GENERATION = false;
- ENV.APP.LOG_VIEW_LOOKUPS = false;
-
- ENV.APP.rootElement = '#ember-testing';
- }
-
- if (environment === 'production') {
-
- }
-
- return ENV;
-};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/ember-cli-build.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/ember-cli-build.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/ember-cli-build.js
deleted file mode 100644
index 2fa2032..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/ember-cli-build.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/* global require, module */
-var EmberApp = require('ember-cli/lib/broccoli/ember-app');
-
-module.exports = function(defaults) {
- var app = new EmberApp(defaults, {
- // Add options here
- });
-
- app.import("bower_components/datatables/media/css/jquery.dataTables.min.css");
- app.import("bower_components/datatables/media/js/jquery.dataTables.min.js");
- app.import("bower_components/momentjs/min/moment.min.js");
- app.import("bower_components/select2/dist/css/select2.min.css");
- app.import("bower_components/select2/dist/js/select2.min.js");
-
- // Use `app.import` to add additional libraries to the generated
- // output files.
- //
- // If you need to use different assets in different
- // environments, specify an object as the first parameter. That
- // object's keys should be the environment name and the values
- // should be the asset to use in that environment.
- //
- // If the library that you are including contains AMD or ES6
- // modules that you would like to import into your application
- // please specify an object with the list of modules as keys
- // along with the exports of each module as its value.
-
- return app.toTree();
-};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/jsconfig.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/jsconfig.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/jsconfig.json
deleted file mode 100644
index 875bb90..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/jsconfig.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "compilerOptions": {
- "target": "ES6",
- "module": "commonjs"
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/package.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/package.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/package.json
deleted file mode 100644
index 5500dcf..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "yarn-ui",
- "version": "0.0.0",
- "description": "Small description for yarn-ui goes here",
- "private": true,
- "directories": {
- "doc": "doc",
- "test": "tests"
- },
- "scripts": {
- "build": "ember build",
- "start": "ember server",
- "test": "ember test"
- },
- "repository": "",
- "engines": {
- "node": ">= 0.10.0"
- },
- "author": "",
- "license": "MIT",
- "devDependencies": {
- "broccoli-asset-rev": "^2.1.2",
- "ember-bootstrap": "0.2.0",
- "ember-cli": "1.13.8",
- "ember-cli-app-version": "0.5.0",
- "ember-cli-babel": "^5.1.3",
- "ember-cli-content-security-policy": "0.4.0",
- "ember-cli-dependency-checker": "^1.0.1",
- "ember-cli-htmlbars": "0.7.9",
- "ember-cli-htmlbars-inline-precompile": "^0.2.0",
- "ember-cli-ic-ajax": "0.2.1",
- "ember-cli-inject-live-reload": "^1.3.1",
- "ember-cli-qunit": "^1.0.0",
- "ember-cli-release": "0.2.3",
- "ember-cli-sri": "^1.0.3",
- "ember-cli-uglify": "^1.2.0",
- "ember-d3": "0.1.0",
- "ember-data": "1.13.8",
- "ember-disable-proxy-controllers": "^1.0.0",
- "ember-export-application-global": "^1.0.3",
- "ember-spin-spinner": "0.2.3",
- "select2": "4.0.0"
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[29/50] [abbrv] hadoop git commit: YARN-5183. [YARN-3368] Support for
responsive navbar when window is resized. (Kai Sasaki via Sunil G)
Posted by su...@apache.org.
YARN-5183. [YARN-3368] Support for responsive navbar when window is resized. (Kai Sasaki via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/94dc2654
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/94dc2654
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/94dc2654
Branch: refs/heads/YARN-3368
Commit: 94dc26540d96c4a111ddace70c4ba9d8c8365f15
Parents: cd7cf2c
Author: Sunil <su...@apache.org>
Authored: Fri Jun 10 10:33:41 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/94dc2654/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
index bce18ce..d21cc3e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
@@ -32,6 +32,9 @@ module.exports = function(defaults) {
app.import("bower_components/select2/dist/js/select2.min.js");
app.import('bower_components/jquery-ui/jquery-ui.js');
app.import('bower_components/more-js/dist/more.js');
+ app.import('bower_components/bootstrap/dist/css/bootstrap.css');
+ app.import('bower_components/bootstrap/dist/css/bootstrap-theme.css');
+ app.import('bower_components/bootstrap/dist/js/bootstrap.min.js');
// Use `app.import` to add additional libraries to the generated
// output files.
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[19/50] [abbrv] hadoop git commit: YARN-4849. [YARN-3368] cleanup
code base, integrate web UI related build to mvn, and fix licenses. (wangda)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
new file mode 100644
index 0000000..f7ec020
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
@@ -0,0 +1,275 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+ // Map: <queue-name, queue>
+ map : undefined,
+
+ // Normalized data for d3
+ treeData: undefined,
+
+ // folded queues, folded[<queue-name>] == true means <queue-name> is folded
+ foldedQueues: { },
+
+ // maxDepth
+ maxDepth: 0,
+
+ // num of leaf queue, folded queue is treated as leaf queue
+ numOfLeafQueue: 0,
+
+ // mainSvg
+ mainSvg: undefined,
+
+ // Init data
+ initData: function() {
+ this.map = { };
+ this.treeData = { };
+ this.maxDepth = 0;
+ this.numOfLeafQueue = 0;
+
+ this.get("model")
+ .forEach(function(o) {
+ this.map[o.id] = o;
+ }.bind(this));
+
+ var selected = this.get("selected");
+
+ this.initQueue("root", 1, this.treeData);
+ },
+
+ // get Children array of given queue
+ getChildrenNamesArray: function(q) {
+ var namesArr = [];
+
+ // Folded queue's children is empty
+ if (this.foldedQueues[q.get("name")]) {
+ return namesArr;
+ }
+
+ var names = q.get("children");
+ if (names) {
+ names.forEach(function(name) {
+ namesArr.push(name);
+ });
+ }
+
+ return namesArr;
+ },
+
+ // Init queues
+ initQueue: function(queueName, depth, node) {
+ if ((!queueName) || (!this.map[queueName])) {
+ // Queue is not existed
+ return;
+ }
+
+ if (depth > this.maxDepth) {
+ this.maxDepth = this.maxDepth + 1;
+ }
+
+ var queue = this.map[queueName];
+
+ var names = this.getChildrenNamesArray(queue);
+
+ node.name = queueName;
+ node.parent = queue.get("parent");
+ node.queueData = queue;
+
+ if (names.length > 0) {
+ node.children = [];
+
+ names.forEach(function(name) {
+ var childQueueData = {};
+ node.children.push(childQueueData);
+ this.initQueue(name, depth + 1, childQueueData);
+ }.bind(this));
+ } else {
+ this.numOfLeafQueue = this.numOfLeafQueue + 1;
+ }
+ },
+
+ update: function(source, root, tree, diagonal) {
+ var duration = 300;
+ var i = 0;
+
+ // Compute the new tree layout.
+ var nodes = tree.nodes(root).reverse();
+ var links = tree.links(nodes);
+
+ // Normalize for fixed-depth.
+ nodes.forEach(function(d) { d.y = d.depth * 200; });
+
+ // Update the nodes\u2026
+ var node = this.mainSvg.selectAll("g.node")
+ .data(nodes, function(d) { return d.id || (d.id = ++i); });
+
+ // Enter any new nodes at the parent's previous position.
+ var nodeEnter = node.enter().append("g")
+ .attr("class", "node")
+ .attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
+ .on("click", function(d,i){
+ if (d.queueData.get("name") != this.get("selected")) {
+ document.location.href = "yarnQueue/" + d.queueData.get("name");
+ }
+ }.bind(this));
+ // .on("click", click);
+
+ nodeEnter.append("circle")
+ .attr("r", 1e-6)
+ .style("fill", function(d) {
+ var usedCap = d.queueData.get("usedCapacity");
+ if (usedCap <= 60.0) {
+ return "LimeGreen";
+ } else if (usedCap <= 100.0) {
+ return "DarkOrange";
+ } else {
+ return "LightCoral";
+ }
+ });
+
+ // append percentage
+ nodeEnter.append("text")
+ .attr("x", function(d) { return 0; })
+ .attr("dy", ".35em")
+ .attr("text-anchor", function(d) { return "middle"; })
+ .text(function(d) {
+ var usedCap = d.queueData.get("usedCapacity");
+ if (usedCap >= 100.0) {
+ return usedCap.toFixed(0) + "%";
+ } else {
+ return usedCap.toFixed(1) + "%";
+ }
+ })
+ .style("fill-opacity", 1e-6);
+
+ // append queue name
+ nodeEnter.append("text")
+ .attr("x", function(d) { return 40; })
+ .attr("dy", ".35em")
+ .attr("text-anchor", function(d) { return "start"; })
+ .text(function(d) { return d.name; })
+ .style("fill-opacity", 1e-6);
+
+ // Transition nodes to their new position.
+ var nodeUpdate = node.transition()
+ .duration(duration)
+ .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; });
+
+ nodeUpdate.select("circle")
+ .attr("r", 20)
+ .attr("href",
+ function(d) {
+ return "yarnQueues/" + d.queueData.get("name");
+ })
+ .style("stroke", function(d) {
+ if (d.queueData.get("name") == this.get("selected")) {
+ return "red";
+ } else {
+ return "gray";
+ }
+ }.bind(this));
+
+ nodeUpdate.selectAll("text")
+ .style("fill-opacity", 1);
+
+ // Transition exiting nodes to the parent's new position.
+ var nodeExit = node.exit().transition()
+ .duration(duration)
+ .attr("transform", function(d) { return "translate(" + source.y + "," + source.x + ")"; })
+ .remove();
+
+ nodeExit.select("circle")
+ .attr("r", 1e-6);
+
+ nodeExit.select("text")
+ .style("fill-opacity", 1e-6);
+
+ // Update the links\u2026
+ var link = this.mainSvg.selectAll("path.link")
+ .data(links, function(d) { return d.target.id; });
+
+ // Enter any new links at the parent's previous position.
+ link.enter().insert("path", "g")
+ .attr("class", "link")
+ .attr("d", function(d) {
+ var o = {x: source.x0, y: source.y0};
+ return diagonal({source: o, target: o});
+ });
+
+ // Transition links to their new position.
+ link.transition()
+ .duration(duration)
+ .attr("d", diagonal);
+
+ // Transition exiting nodes to the parent's new position.
+ link.exit().transition()
+ .duration(duration)
+ .attr("d", function(d) {
+ var o = {x: source.x, y: source.y};
+ return diagonal({source: o, target: o});
+ })
+ .remove();
+
+ // Stash the old positions for transition.
+ nodes.forEach(function(d) {
+ d.x0 = d.x;
+ d.y0 = d.y;
+ });
+ },
+
+ reDraw: function() {
+ this.initData();
+
+ var margin = {top: 20, right: 120, bottom: 20, left: 120};
+ var treeWidth = this.maxDepth * 200;
+ var treeHeight = this.numOfLeafQueue * 80;
+ var width = treeWidth + margin.left + margin.right;
+ var height = treeHeight + margin.top + margin.bottom;
+ var layout = { };
+
+ if (this.mainSvg) {
+ this.mainSvg.remove();
+ }
+
+ this.mainSvg = d3.select("#" + this.get("parentId")).append("svg")
+ .attr("width", width)
+ .attr("height", height)
+ .attr("class", "tree-selector")
+ .append("g")
+ .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
+
+ var tree = d3.layout.tree().size([treeHeight, treeWidth]);
+
+ var diagonal = d3.svg.diagonal()
+ .projection(function(d) { return [d.y, d.x]; });
+
+ var root = this.treeData;
+ root.x0 = height / 2;
+ root.y0 = 0;
+
+ d3.select(self.frameElement).style("height", height);
+
+ this.update(root, root, tree, diagonal);
+ },
+
+ didInsertElement: function() {
+ this.reDraw();
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js
new file mode 100644
index 0000000..224c65a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js
@@ -0,0 +1,27 @@
+/**
+ * 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.
+ */
+
+/**
+ * Host and port configurations
+ */
+export default {
+ RM_HOST: 'localhost',
+ RM_PORT: '8088',
+ TS_HOST: 'localhost',
+ TS_PORT: '8188',
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/constants.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/constants.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/constants.js
new file mode 100644
index 0000000..d2937a0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/constants.js
@@ -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.
+ */
+
+/**
+ * Application level global constants go here.
+ */
+export default {
+ PARAM_SEPARATOR: '!',
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/application.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/application.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/application.js
new file mode 100644
index 0000000..3c68365
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/application.js
@@ -0,0 +1,55 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+/**
+ * Base controller for application.
+ */
+export default Ember.Controller.extend({
+ /**
+ * Output main top UI menu which is common across all pages.
+ * Menu item will be made active based on current path.
+ */
+ outputMainMenu: function(){
+ var path = this.get('currentPath');
+ var html = '<li';
+ if (path == 'yarnQueue') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnQueue/root">Queues<span class="sr-only">' +
+ '(current)</span></a></li><li';
+ if (path.lastIndexOf('yarnApp', 0) == 0) {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnApps">Applications<span class="sr-only">' +
+ '(current)</span></a></li><li';
+ if (path == 'clusterOverview') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="clusterOverview">Cluster Overview<span class=' +
+ '"sr-only">(current)</span></a></li><li';
+ if (path.lastIndexOf('yarnNode', 0) == 0) {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnNodes">Nodes<span class="sr-only">' +
+ '(current)</span></a></li>';
+ return Ember.String.htmlSafe(html);
+ }.property('currentPath')
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/cluster-overview.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/cluster-overview.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/cluster-overview.js
new file mode 100644
index 0000000..dc2f6e4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/cluster-overview.js
@@ -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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+ loading: true,
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps.js
new file mode 100644
index 0000000..dc99fd1
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue.js
new file mode 100644
index 0000000..38cf352
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-queue.js
@@ -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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+ needReload: true,
+ selectedQueue: undefined,
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/divide.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/divide.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/divide.js
new file mode 100644
index 0000000..fcf64dd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/divide.js
@@ -0,0 +1,31 @@
+/**
+ * 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.
+ */
+import Ember from 'ember';
+
+/**
+ * Helper assumes values are numeric. num means numerator and
+ * den means denominator.
+ */
+export default Ember.Helper.helper(function(params,hash) {
+ var num = hash.num;
+ var den = hash.den;
+ if (den == 0) {
+ return 0;
+ }
+ return Math.floor(num/den);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
new file mode 100644
index 0000000..8c29b34
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
@@ -0,0 +1,48 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+/**
+ * Represent log files as comma separated list.
+ */
+export default Ember.Helper.helper(function(params,hash) {
+ var logFiles = hash.logFiles;
+ if (logFiles == null) {
+ return "";
+ }
+ var logFilesLen = logFiles.length;
+ if (logFilesLen == 0) {
+ return "";
+ }
+ var nodeId = hash.nodeId;
+ var nodeAddr = hash.nodeAddr;
+ var containerId = hash.containerId;
+ var html = '<td>';
+ var logFilesCommaSeparated = "";
+ for (var i = 0; i < logFilesLen; i++) {
+ html = html + '<a href="yarnContainerLog/' + nodeId + '/' +
+ nodeAddr + '/' + containerId + '/' + logFiles[i] + '">' + logFiles[i] +
+ '</a>';
+ if (i != logFilesLen - 1) {
+ html = html + ",";
+ }
+ }
+ html = html + '</td>';
+ return Ember.String.htmlSafe(html);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
new file mode 100644
index 0000000..99d975b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
@@ -0,0 +1,37 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+/**
+ * Generate link to node page if its not SHUTDOWN or LOST.
+ */
+export default Ember.Helper.helper(function(params,hash) {
+ var nodeState = hash.nodeState;
+ var nodeHTTPAddress = hash.nodeHTTPAddress;
+ var nodeId = hash.nodeId;
+ var html = '<td>';
+ if (nodeState == "SHUTDOWN" || nodeState == "LOST") {
+ html = html + nodeHTTPAddress;
+ } else {
+ html = html + '<a href="yarnNode/' + nodeId + "/" + nodeHTTPAddress + '">' +
+ nodeHTTPAddress + '</a>';
+ }
+ html = html + '</td>';
+ return Ember.String.htmlSafe(html);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
new file mode 100644
index 0000000..589111f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
@@ -0,0 +1,66 @@
+/**
+ * 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.
+ */
+import Ember from 'ember';
+
+/**
+ * Create left hand side node manager menu with menu item activated based
+ * on page being accessed.
+ */
+export default Ember.Helper.helper(function(params,hash) {
+ // Place a menu within a panel inside col-md-2 container.
+ var nodeIdSplitAtPort = hash.nodeId;
+ var portIndex = nodeIdSplitAtPort.indexOf(':');
+ if (portIndex != -1) {
+ nodeIdSplitAtPort = nodeIdSplitAtPort.substring(0, portIndex) +
+ ':​' + nodeIdSplitAtPort.substring(portIndex + 1);
+ }
+ var normalizedNodeId = '';
+ var splitsAlongDots = nodeIdSplitAtPort.split('.');
+ if (splitsAlongDots) {
+ var len = splitsAlongDots.length;
+ for (var i = 0; i < len; i++) {
+ normalizedNodeId = normalizedNodeId + splitsAlongDots[i];
+ if (i != len - 1) {
+ normalizedNodeId = normalizedNodeId + '.​';
+ }
+ }
+ } else {
+ normalizedNodeId = nodeIdSplitAtPort;
+ }
+
+ var html = '<div class="col-md-2 container-fluid"><div class="panel panel-default">'+
+ '<div class="panel-heading"><h4>Node Manager<br>(' + normalizedNodeId + ')</h4></div>'+
+ '<div class="panel-body"><ul class="nav nav-pills nav-stacked" id="stacked-menu">' +
+ '<ul class="nav nav-pills nav-stacked collapse in"><li';
+ if (hash.path == 'yarnNode') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnNode/' + hash.nodeId + '/' + hash.nodeAddr +
+ '">Node Information</a></li><li';
+ if (hash.path == 'yarnNodeApps') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnNodeApps/' + hash.nodeId + '/' + hash.nodeAddr +
+ '">List of Applications</a></li><li';
+ if (hash.path == 'yarnNodeContainers') {
+ html = html + ' class="active"';
+ }
+ html = html + '><a href="yarnNodeContainers/' +hash.nodeId + '/' + hash.nodeAddr +
+ '">List of Containers</a></li></ul></ul></div>';
+ return Ember.String.htmlSafe(html);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/index.html
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/index.html b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/index.html
new file mode 100644
index 0000000..969ea2f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/index.html
@@ -0,0 +1,43 @@
+<!--
+* 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.
+-->
+
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <title>YarnUi</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ {{content-for 'head'}}
+
+ <link rel="stylesheet" href="assets/vendor.css">
+ <link rel="stylesheet" href="assets/yarn-ui.css">
+
+ {{content-for 'head-footer'}}
+ </head>
+ <body>
+ {{content-for 'body'}}
+
+ <script src="assets/vendor.js"></script>
+ <script src="assets/yarn-ui.js"></script>
+
+ {{content-for 'body-footer'}}
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-info.js
new file mode 100644
index 0000000..332fdf3
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-info.js
@@ -0,0 +1,31 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ startedOn: DS.attr('string'),
+ state: DS.attr('string'),
+ haState: DS.attr('string'),
+ rmStateStoreName: DS.attr('string'),
+ resourceManagerVersion: DS.attr('string'),
+ resourceManagerBuildVersion: DS.attr('string'),
+ hadoopVersion: DS.attr('string'),
+ hadoopBuildVersion: DS.attr('string'),
+ hadoopVersionBuiltOn: DS.attr('string')
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-metric.js
new file mode 100644
index 0000000..981375a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-metric.js
@@ -0,0 +1,133 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ appsSubmitted: DS.attr('number'),
+ appsCompleted: DS.attr('number'),
+ appsPending: DS.attr('number'),
+ appsRunning: DS.attr('number'),
+ appsFailed: DS.attr('number'),
+ appsKilled: DS.attr('number'),
+ reservedMB: DS.attr('number'),
+ availableMB: DS.attr('number'),
+ allocatedMB: DS.attr('number'),
+ reservedVirtualCores: DS.attr('number'),
+ availableVirtualCores: DS.attr('number'),
+ allocatedVirtualCores: DS.attr('number'),
+ containersAllocated: DS.attr('number'),
+ containersReserved: DS.attr('number'),
+ containersPending: DS.attr('number'),
+ totalMB: DS.attr('number'),
+ totalVirtualCores: DS.attr('number'),
+ totalNodes: DS.attr('number'),
+ lostNodes: DS.attr('number'),
+ unhealthyNodes: DS.attr('number'),
+ decommissionedNodes: DS.attr('number'),
+ rebootedNodes: DS.attr('number'),
+ activeNodes: DS.attr('number'),
+
+ getFinishedAppsDataForDonutChart: function() {
+ var arr = [];
+ arr.push({
+ label: "Completed",
+ value: this.get("appsCompleted")
+ });
+ arr.push({
+ label: "Killed",
+ value: this.get("appsKilled")
+ });
+ arr.push({
+ label: "Failed",
+ value: this.get("appsFailed")
+ });
+
+ return arr;
+ }.property("appsCompleted", "appsKilled", "appsFailed"),
+
+ getRunningAppsDataForDonutChart: function() {
+ var arr = [];
+
+ arr.push({
+ label: "Pending",
+ value: this.get("appsPending")
+ });
+ arr.push({
+ label: "Running",
+ value: this.get("appsRunning")
+ });
+
+ return arr;
+ }.property("appsPending", "appsRunning"),
+
+ getNodesDataForDonutChart: function() {
+ var arr = [];
+ arr.push({
+ label: "Active",
+ value: this.get("activeNodes")
+ });
+ arr.push({
+ label: "Unhealthy",
+ value: this.get("unhealthyNodes")
+ });
+ arr.push({
+ label: "Decomissioned",
+ value: this.get("decommissionedNodes")
+ });
+ return arr;
+ }.property("activeNodes", "unhealthyNodes", "decommissionedNodes"),
+
+ getMemoryDataForDonutChart: function() {
+ var type = "MB";
+ var arr = [];
+ arr.push({
+ label: "Allocated",
+ value: this.get("allocated" + type)
+ });
+ arr.push({
+ label: "Reserved",
+ value: this.get("reserved" + type)
+ });
+ arr.push({
+ label: "Available",
+ value: this.get("available" + type)
+ });
+
+ return arr;
+ }.property("allocatedMB", "reservedMB", "availableMB"),
+
+ getVCoreDataForDonutChart: function() {
+ var type = "VirtualCores";
+ var arr = [];
+ arr.push({
+ label: "Allocated",
+ value: this.get("allocated" + type)
+ });
+ arr.push({
+ label: "Reserved",
+ value: this.get("reserved" + type)
+ });
+ arr.push({
+ label: "Available",
+ value: this.get("available" + type)
+ });
+
+ return arr;
+ }.property("allocatedVirtualCores", "reservedVirtualCores", "availableVirtualCores"),
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
new file mode 100644
index 0000000..b699bb3
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
@@ -0,0 +1,62 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.Model.extend({
+ startTime: DS.attr('string'),
+ finishedTime: DS.attr('string'),
+ containerId: DS.attr('string'),
+ nodeHttpAddress: DS.attr('string'),
+ nodeId: DS.attr('string'),
+ logsLink: DS.attr('string'),
+
+ startTs: function() {
+ return Converter.dateToTimeStamp(this.get("startTime"));
+ }.property("startTime"),
+
+ finishedTs: function() {
+ var ts = Converter.dateToTimeStamp(this.get("finishedTime"));
+ return ts;
+ }.property("finishedTime"),
+
+ shortAppAttemptId: function() {
+ return "attempt_" +
+ parseInt(Converter.containerIdToAttemptId(this.get("containerId")).split("_")[3]);
+ }.property("containerId"),
+
+ elapsedTime: function() {
+ var elapsedMs = this.get("finishedTs") - this.get("startTs");
+ if (elapsedMs <= 0) {
+ elapsedMs = Date.now() - this.get("startTs");
+ }
+
+ return Converter.msToElapsedTime(elapsedMs);
+ }.property(),
+
+ tooltipLabel: function() {
+ return "<p>Id:" + this.get("id") +
+ "</p><p>ElapsedTime:" +
+ String(this.get("elapsedTime")) + "</p>";
+ }.property(),
+
+ link: function() {
+ return "/yarnAppAttempt/" + this.get("id");
+ }.property(),
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
new file mode 100644
index 0000000..1d506c2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
@@ -0,0 +1,83 @@
+/**
+ * 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.
+ */
+
+import Converter from 'yarn-ui/utils/converter';
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ appName: DS.attr('string'),
+ user: DS.attr('string'),
+ queue: DS.attr('string'),
+ state: DS.attr('string'),
+ startTime: DS.attr('string'),
+ elapsedTime: DS.attr('string'),
+ finalStatus: DS.attr('string'),
+ finishedTime: DS.attr('finishedTime'),
+ progress: DS.attr('number'),
+ diagnostics: DS.attr('string'),
+ amContainerLogs: DS.attr('string'),
+ amHostHttpAddress: DS.attr('string'),
+ logAggregationStatus: DS.attr('string'),
+ unmanagedApplication: DS.attr('string'),
+ amNodeLabelExpression: DS.attr('string'),
+ applicationTags: DS.attr('string'),
+ priority: DS.attr('number'),
+ allocatedMB: DS.attr('number'),
+ allocatedVCores: DS.attr('number'),
+ runningContainers: DS.attr('number'),
+ memorySeconds: DS.attr('number'),
+ vcoreSeconds: DS.attr('number'),
+ preemptedResourceMB: DS.attr('number'),
+ preemptedResourceVCores: DS.attr('number'),
+ numNonAMContainerPreempted: DS.attr('number'),
+ numAMContainerPreempted: DS.attr('number'),
+
+ isFailed: function() {
+ return this.get('finalStatus') == "FAILED"
+ }.property("finalStatus"),
+
+ allocatedResource: function() {
+ return Converter.resourceToString(this.get("allocatedMB"), this.get("allocatedVCores"));
+ }.property("allocatedMB", "allocatedVCores"),
+
+ preemptedResource: function() {
+ return Converter.resourceToString(this.get("preemptedResourceMB"), this.get("preemptedResourceVCores"));
+ }.property("preemptedResourceMB", "preemptedResourceVCores"),
+
+ aggregatedResourceUsage: function() {
+ return Converter.resourceToString(this.get("memorySeconds"), this.get("vcoreSeconds")) + " (� Secs)";
+ }.property("memorySeconds", "vcoreSeconds"),
+
+ progressStyle: function() {
+ return "width: " + this.get("progress") + "%";
+ }.property("progress"),
+
+ finalStatusStyle: function() {
+ var style = "default";
+ var finalStatus = this.get("finalStatus");
+ if (finalStatus == "KILLED") {
+ style = "warning";
+ } else if (finalStatus == "FAILED") {
+ style = "danger";
+ } else {
+ style = "success";
+ }
+
+ return "label label-" + style;
+ }.property("finalStatus")
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container-log.js
new file mode 100644
index 0000000..31cf61e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container-log.js
@@ -0,0 +1,25 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ logs: DS.attr('string'),
+ containerID: DS.attr('string'),
+ logFileName: DS.attr('string')
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container.js
new file mode 100644
index 0000000..b745296
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container.js
@@ -0,0 +1,57 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.Model.extend({
+ allocatedMB: DS.attr('number'),
+ allocatedVCores: DS.attr('number'),
+ assignedNodeId: DS.attr('string'),
+ priority: DS.attr('number'),
+ startedTime: DS.attr('number'),
+ finishedTime: DS.attr('number'),
+ logUrl: DS.attr('string'),
+ containerExitStatus: DS.attr('number'),
+ containerState: DS.attr('string'),
+ nodeHttpAddress: DS.attr('string'),
+
+ startTs: function() {
+ return Converter.dateToTimeStamp(this.get("startedTime"));
+ }.property("startedTime"),
+
+ finishedTs: function() {
+ var ts = Converter.dateToTimeStamp(this.get("finishedTime"));
+ return ts;
+ }.property("finishedTime"),
+
+ elapsedTime: function() {
+ var elapsedMs = this.get("finishedTs") - this.get("startTs");
+ if (elapsedMs <= 0) {
+ elapsedMs = Date.now() - this.get("startTs");
+ }
+
+ return Converter.msToElapsedTime(elapsedMs);
+ }.property(),
+
+ tooltipLabel: function() {
+ return "<p>Id:" + this.get("id") +
+ "</p><p>ElapsedTime:" +
+ String(this.get("elapsedTime")) + "</p>";
+ }.property(),
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node-app.js
new file mode 100644
index 0000000..6dc69ae
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node-app.js
@@ -0,0 +1,44 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ appId: DS.attr('string'),
+ state: DS.attr('string'),
+ user: DS.attr('string'),
+ containers: DS.attr('array'),
+ /**
+ * Indicates no rows were retrieved from backend
+ */
+ isDummyApp: function() {
+ return this.get('id') == "dummy";
+ }.property("id"),
+
+ appStateStyle: function() {
+ var style = "default";
+ var appState = this.get("state");
+ if (appState == "RUNNING" || appState == "FINISHING_CONTAINERS_WAIT" ||
+ appState == "APPLICATION_RESOURCES_CLEANINGUP") {
+ style = "primary";
+ } else if (appState == "FINISHED") {
+ style = "success";
+ }
+ return "label label-" + style;
+ }.property("state")
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node-container.js
new file mode 100644
index 0000000..3ba3216
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node-container.js
@@ -0,0 +1,57 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ containerId: DS.attr('string'),
+ state: DS.attr('string'),
+ user: DS.attr('string'),
+ exitCode: DS.attr('string'),
+ diagnostics: DS.attr('string'),
+ totalMemoryNeeded: DS.attr('number'),
+ totalVCoresNeeded: DS.attr('number'),
+ containerLogFiles: DS.attr('array'),
+
+ /**
+ * Indicates that there was no container retrieved from backend.
+ */
+ isDummyContainer: function() {
+ return this.get('id') == "dummy";
+ }.property("id"),
+
+ containerStateStyle: function() {
+ var style = "primary";
+ var containerState = this.get('state');
+ var containerExitCode = this.get('exitCode');
+ if (containerState == "DONE") {
+ if (containerExitCode == "0") {
+ style = "success";
+ } else if (containerExitCode != "N/A") {
+ style = "danger";
+ }
+ }
+ if (containerState == "EXITED_WITH_SUCCESS") {
+ style = "success";
+ }
+ if (containerState == "EXITED_WITH_FAILURE") {
+ style = "danger";
+ }
+ return "label label-" + style;
+ }.property("state", "exitCode")
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node.js
new file mode 100644
index 0000000..4753983
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-node.js
@@ -0,0 +1,33 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ totalVmemAllocatedContainersMB: DS.attr('number'),
+ totalPmemAllocatedContainersMB: DS.attr('number'),
+ totalVCoresAllocatedContainers: DS.attr('number'),
+ vmemCheckEnabled: DS.attr('boolean'),
+ pmemCheckEnabled: DS.attr('boolean'),
+ nodeHealthy: DS.attr('boolean'),
+ lastNodeUpdateTime: DS.attr('string'),
+ healthReport: DS.attr('string'),
+ nmStartupTime: DS.attr('string'),
+ nodeManagerBuildVersion: DS.attr('string'),
+ hadoopBuildVersion: DS.attr('string'),
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-queue.js
new file mode 100644
index 0000000..7de4ccc
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-queue.js
@@ -0,0 +1,94 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ name: DS.attr('string'),
+ children: DS.attr('array'),
+ parent: DS.attr('string'),
+ capacity: DS.attr('number'),
+ maxCapacity: DS.attr('number'),
+ usedCapacity: DS.attr('number'),
+ absCapacity: DS.attr('number'),
+ absMaxCapacity: DS.attr('number'),
+ absUsedCapacity: DS.attr('number'),
+ state: DS.attr('string'),
+ userLimit: DS.attr('number'),
+ userLimitFactor: DS.attr('number'),
+ preemptionDisabled: DS.attr('number'),
+ numPendingApplications: DS.attr('number'),
+ numActiveApplications: DS.attr('number'),
+ users: DS.hasMany('YarnUser'),
+
+ isLeafQueue: function() {
+ var len = this.get("children.length");
+ if (!len) {
+ return true;
+ }
+ return len <= 0;
+ }.property("children"),
+
+ capacitiesBarChartData: function() {
+ return [
+ {
+ label: "Absolute Capacity",
+ value: this.get("name") == "root" ? 100 : this.get("absCapacity")
+ },
+ {
+ label: "Absolute Used",
+ value: this.get("name") == "root" ? this.get("usedCapacity") : this.get("absUsedCapacity")
+ },
+ {
+ label: "Absolute Max Capacity",
+ value: this.get("name") == "root" ? 100 : this.get("absMaxCapacity")
+ }
+ ]
+ }.property("absCapacity", "absUsedCapacity", "absMaxCapacity"),
+
+ userUsagesDonutChartData: function() {
+ var data = [];
+ if (this.get("users")) {
+ this.get("users").forEach(function(o) {
+ data.push({
+ label: o.get("name"),
+ value: o.get("usedMemoryMB")
+ })
+ });
+ }
+
+ return data;
+ }.property("users"),
+
+ hasUserUsages: function() {
+ return this.get("userUsagesDonutChartData").length > 0;
+ }.property(),
+
+ numOfApplicationsDonutChartData: function() {
+ return [
+ {
+ label: "Pending Apps",
+ value: this.get("numPendingApplications") || 0 // TODO, fix the REST API so root will return #applications as well.
+ },
+ {
+ label: "Active Apps",
+ value: this.get("numActiveApplications") || 0
+ }
+ ]
+ }.property(),
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-rm-node.js
new file mode 100644
index 0000000..9a1082c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-rm-node.js
@@ -0,0 +1,92 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ rack: DS.attr('string'),
+ state: DS.attr('string'),
+ nodeHostName: DS.attr('string'),
+ nodeHTTPAddress: DS.attr('string'),
+ lastHealthUpdate: DS.attr('string'),
+ healthReport: DS.attr('string'),
+ numContainers: DS.attr('number'),
+ usedMemoryMB: DS.attr('number'),
+ availMemoryMB: DS.attr('number'),
+ usedVirtualCores: DS.attr('number'),
+ availableVirtualCores: DS.attr('number'),
+ version: DS.attr('string'),
+ nodeLabels: DS.attr('array'),
+
+ nodeLabelsAsString: function() {
+ var labels = this.get("nodeLabels");
+ var labelToReturn = "";
+ // Only one label per node supported.
+ if (labels && labels.length > 0) {
+ labelToReturn = labels[0];
+ }
+ return labelToReturn;
+ }.property("nodeLabels"),
+
+ /**
+ * Indicates no rows were retrieved from backend
+ */
+ isDummyNode: function() {
+ return this.get('id') == "dummy";
+ }.property("id"),
+
+ nodeStateStyle: function() {
+ var style = "default";
+ var nodeState = this.get("state");
+ if (nodeState == "REBOOTED") {
+ style = "warning";
+ } else if (nodeState == "UNHEALTHY" || nodeState == "DECOMMISSIONED" ||
+ nodeState == "LOST" || nodeState == "SHUTDOWN") {
+ style = "danger";
+ } else if (nodeState == "RUNNING") {
+ style = "success";
+ }
+ return "label label-" + style;
+ }.property("state"),
+
+ getMemoryDataForDonutChart: function() {
+ var arr = [];
+ arr.push({
+ label: "Used",
+ value: this.get("usedMemoryMB")
+ });
+ arr.push({
+ label: "Available",
+ value: this.get("availMemoryMB")
+ });
+ return arr;
+ }.property("availMemoryMB", "usedMemoryMB"),
+
+ getVCoreDataForDonutChart: function() {
+ var arr = [];
+ arr.push({
+ label: "Used",
+ value: this.get("usedVirtualCores")
+ });
+ arr.push({
+ label: "Available",
+ value: this.get("availableVirtualCores")
+ });
+ return arr;
+ }.property("availableVirtualCores", "usedVirtualCores"),
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-user.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-user.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-user.js
new file mode 100644
index 0000000..7cfd182
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-user.js
@@ -0,0 +1,26 @@
+/**
+ * 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.
+ */
+
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ name: DS.attr('string'),
+ queueName: DS.attr('string'),
+ usedMemoryMB: DS.attr('number'),
+ usedVCore: DS.attr('number')
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
new file mode 100644
index 0000000..67e9d2c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
@@ -0,0 +1,47 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import config from './config/environment';
+
+var Router = Ember.Router.extend({
+ location: config.locationType
+});
+
+Router.map(function() {
+ this.route('yarnApps');
+ this.route('yarnNodes');
+ this.route('yarnNode', { path: '/yarnNode/:node_id/:node_addr' });
+ this.route('yarnNodeApps', { path: '/yarnNodeApps/:node_id/:node_addr' });
+ this.route('yarnNodeApp',
+ { path: '/yarnNodeApp/:node_id/:node_addr/:app_id' });
+ this.route('yarnNodeContainers',
+ { path: '/yarnNodeContainers/:node_id/:node_addr' });
+ this.route('yarnNodeContainer',
+ { path: '/yarnNodeContainer/:node_id/:node_addr/:container_id' });
+ this.route('yarnContainerLog', { path:
+ '/yarnContainerLog/:node_id/:node_addr/:container_id/:filename' });
+ this.route('yarnQueue', { path: '/yarnQueue/:queue_name' });
+ this.route('clusterOverview');
+ this.route('yarnApp', { path: '/yarnApp/:app_id' });
+ this.route('yarnAppAttempt', { path: '/yarnAppAttempt/:app_attempt_id'});
+ this.route('error');
+ this.route('notfound', { path: '*:' });
+});
+
+export default Router;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
new file mode 100644
index 0000000..b7a5754
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
@@ -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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ actions: {
+ /**
+ * Base error handler for the application.
+ * If specific routes do not handle the error, it will bubble up to
+ * this handler. Here we redirect to either 404 page or a generic
+ * error handler page.
+ */
+ error: function (error) {
+ if (error && error.errors[0] &&
+ error.errors[0].status == 404) {
+ this.intermediateTransitionTo('/notfound');
+ } else {
+ this.intermediateTransitionTo('/error');
+ }
+ }
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
new file mode 100644
index 0000000..4b4e554
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/cluster-overview.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model() {
+ return this.store.findAll('ClusterMetric');
+ },
+
+ afterModel() {
+ this.controllerFor("ClusterOverview").set("loading", false);
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/index.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/index.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/index.js
new file mode 100644
index 0000000..b228ff4
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/index.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ /**
+ * Redirect root URL to cluster overview page.
+ */
+ beforeModel: function() {
+ this.replaceWith('clusterOverview');
+ }
+});
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
new file mode 100644
index 0000000..72a001c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
@@ -0,0 +1,39 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ attempt: this.store.findRecord('yarnAppAttempt', param.app_attempt_id),
+
+ rmContainers: this.store.query('yarnContainer',
+ {
+ app_attempt_id: param.app_attempt_id,
+ is_rm: true
+ }),
+
+ tsContainers: this.store.query('yarnContainer',
+ {
+ app_attempt_id: param.app_attempt_id,
+ is_rm: false
+ }),
+ });
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
new file mode 100644
index 0000000..fcdfad8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ app: this.store.find('yarnApp', param.app_id),
+ attempts: this.store.query('yarnAppAttempt', { appId: param.app_id})
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
new file mode 100644
index 0000000..083f62d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
@@ -0,0 +1,26 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model() {
+ var apps = this.store.findAll('yarnApp');
+ return apps;
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
new file mode 100644
index 0000000..c324025
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
@@ -0,0 +1,55 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import Constants from 'yarn-ui/constants';
+
+export default Ember.Route.extend({
+ model(param) {
+ var id = param.node_addr + Constants.PARAM_SEPARATOR + param.container_id +
+ Constants.PARAM_SEPARATOR + param.filename;
+ return Ember.RSVP.hash({
+ containerLog: this.store.findRecord('yarnContainerLog', id),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ }).then(function(hash) {
+ // Just return as its success.
+ return hash;
+ }, function(reason) {
+ if (reason.errors && reason.errors[0]) {
+ // This means HTTP error response was sent by adapter.
+ return reason;
+ } else {
+ // Assume empty response received from server.
+ return { nodeInfo: { id: param.node_id, addr: param.node_addr },
+ containerLog: { logs: "", containerID: param.container_id,
+ logFileName: param.filename}};
+ }
+ });
+ },
+
+ afterModel(model) {
+ // Handle errors and redirect if promise is rejected.
+ if (model.errors && model.errors[0]) {
+ if (model.errors[0].status == 404) {
+ this.replaceWith('/notfound');
+ } else {
+ this.replaceWith('/error');
+ }
+ }
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
new file mode 100644
index 0000000..63b1f2a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ nodeApp: this.store.queryRecord('yarnNodeApp',
+ { nodeAddr : param.node_addr, appId: param.app_id }),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
new file mode 100644
index 0000000..ffb5b7b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ // Get all apps running on a specific node. Node is contacted by using node_addr.
+ return Ember.RSVP.hash({
+ apps: this.store.query('yarnNodeApp', { nodeAddr: param.node_addr }),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
new file mode 100644
index 0000000..2022662
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ // Get a specific container running on a specific node.
+ return Ember.RSVP.hash({
+ nodeContainer: this.store.queryRecord('yarnNodeContainer',
+ { nodeHttpAddr: param.node_addr, containerId: param.container_id }),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
new file mode 100644
index 0000000..9a69729
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ */
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ // Get all containers running on specific node.
+ return Ember.RSVP.hash({
+ containers: this.store.query('yarnNodeContainer', { nodeHttpAddr: param.node_addr }),
+ nodeInfo: { id: param.node_id, addr: param.node_addr }
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
new file mode 100644
index 0000000..7c58b94
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ // Fetches data from both NM and RM. RM is queried to get node usage info.
+ return Ember.RSVP.hash({
+ node: this.store.findRecord('yarnNode', param.node_addr),
+ rmNode: this.store.findRecord('yarnRmNode', param.node_id)
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8c83bf4a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
new file mode 100644
index 0000000..f33eef8
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
@@ -0,0 +1,25 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model() {
+ return this.store.findAll('yarnRmNode');
+ }
+});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[45/50] [abbrv] hadoop git commit: YARN-5145. [YARN-3368] Move new
YARN UI configuration to HADOOP_CONF_DIR. (Sunil G and Kai Sasaki via wangda)
Posted by su...@apache.org.
YARN-5145. [YARN-3368] Move new YARN UI configuration to HADOOP_CONF_DIR. (Sunil G and Kai Sasaki via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d4d90357
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d4d90357
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d4d90357
Branch: refs/heads/YARN-3368
Commit: d4d9035770180d7b4b27c2c3f0c803395e1c5e24
Parents: b5cb611
Author: Wangda Tan <wa...@apache.org>
Authored: Mon Oct 17 11:30:16 2016 -0700
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../src/main/webapp/app/initializers/loader.js | 86 ++++++++++++++++++++
.../tests/unit/initializers/loader-test.js | 40 +++++++++
2 files changed, 126 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d4d90357/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/loader.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/loader.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/loader.js
new file mode 100644
index 0000000..08e4dbd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/loader.js
@@ -0,0 +1,86 @@
+/**
+ * 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.
+ */
+
+
+function getTimeLineURL(parameters) {
+ return '/conf?name=yarn.timeline-service.webapp.address';
+}
+
+function updateConfigs(application) {
+ var hostname = window.location.hostname;
+ var rmhost = hostname +
+ (window.location.port ? ':' + window.location.port: '');
+
+ Ember.Logger.log("RM Address:" + rmhost);
+
+ if(!ENV.hosts.rmWebAddress) {
+ ENV = {
+ hosts: {
+ rmWebAddress: rmhost,
+ },
+ };
+ }
+
+ if(!ENV.hosts.timelineWebAddress) {
+ var result = [];
+ var timelinehost = "";
+ $.ajax({
+ type: 'GET',
+ dataType: 'json',
+ async: true,
+ context: this,
+ url: getTimeLineURL(),
+ success: function(data) {
+ timelinehost = data.property.value;
+ ENV.hosts.timelineWebAddress = timelinehost;
+
+ var address = timelinehost.split(":")[0];
+ var port = timelinehost.split(":")[1];
+
+ Ember.Logger.log("Timeline Address from RM:" + address + ":" + port);
+
+ if(address == "0.0.0.0" || address == "localhost") {
+ var updatedAddress = hostname + ":" + port;
+
+ /* Timeline v2 is not supporting CORS, so make as default*/
+ ENV = {
+ hosts: {
+ rmWebAddress: rmhost,
+ timelineWebAddress: updatedAddress,
+ },
+ };
+ Ember.Logger.log("Timeline Updated Address:" + updatedAddress);
+ }
+ application.advanceReadiness();
+ },
+ });
+ } else {
+ application.advanceReadiness();
+ }
+}
+
+export function initialize( application ) {
+ application.deferReadiness();
+ updateConfigs(application);
+}
+
+export default {
+ name: 'loader',
+ before: 'env',
+ initialize
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/d4d90357/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/loader-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/loader-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/loader-test.js
new file mode 100644
index 0000000..cc32e92
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/loader-test.js
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import LoaderInitializer from '../../../initializers/loader';
+import { module, test } from 'qunit';
+
+let application;
+
+module('Unit | Initializer | loader', {
+ beforeEach() {
+ Ember.run(function() {
+ application = Ember.Application.create();
+ application.deferReadiness();
+ });
+ }
+});
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ LoaderInitializer.initialize(application);
+
+ // you would normally confirm the results of the initializer here
+ assert.ok(true);
+});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[06/50] [abbrv] hadoop git commit: YARN-5779. [YARN-3368] Document
limits/notes of the new YARN UI (Wangda Tan via Sunil G)
Posted by su...@apache.org.
YARN-5779. [YARN-3368] Document limits/notes of the new YARN UI (Wangda Tan via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b596534e
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b596534e
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b596534e
Branch: refs/heads/YARN-3368
Commit: b596534e38204de4b699677dd2768fff33318b9d
Parents: 6871a46
Author: sunilg <su...@apache.org>
Authored: Wed Oct 26 21:58:30 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md | 5 +++++
1 file changed, 5 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b596534e/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
index f646d3d..9f82031 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnUI2.md
@@ -41,3 +41,8 @@ origin (CORS) support.
Use it
-------------
Open your browser, go to `rm-address:8088/ui2` and try it!
+
+Notes
+-------------
+
+- This UI framework is not verified under security environment, please use with caution under security environment.
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[25/50] [abbrv] hadoop git commit: YARN-4733. [YARN-3368] Initial
commit of new YARN web UI. (wangda)
Posted by su...@apache.org.
YARN-4733. [YARN-3368] Initial commit of new YARN web UI. (wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7dca449f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7dca449f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7dca449f
Branch: refs/heads/YARN-3368
Commit: 7dca449f9fc3b700deff4912c806c045cd3004de
Parents: 3de1302
Author: Wangda Tan <wa...@apache.org>
Authored: Tue Dec 8 16:37:50 2015 -0800
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop-yarn/hadoop-yarn-ui/.bowerrc | 4 +
.../hadoop-yarn/hadoop-yarn-ui/.editorconfig | 34 +++
.../hadoop-yarn/hadoop-yarn-ui/.ember-cli | 11 +
.../hadoop-yarn/hadoop-yarn-ui/.gitignore | 17 ++
.../hadoop-yarn/hadoop-yarn-ui/.jshintrc | 32 +++
.../hadoop-yarn/hadoop-yarn-ui/.travis.yml | 23 ++
.../hadoop-yarn/hadoop-yarn-ui/.watchmanconfig | 3 +
.../hadoop-yarn/hadoop-yarn-ui/README.md | 24 ++
.../hadoop-yarn-ui/app/adapters/cluster-info.js | 19 ++
.../app/adapters/cluster-metric.js | 19 ++
.../app/adapters/yarn-app-attempt.js | 31 +++
.../hadoop-yarn-ui/app/adapters/yarn-app.js | 25 ++
.../app/adapters/yarn-container.js | 42 +++
.../hadoop-yarn-ui/app/adapters/yarn-queue.js | 19 ++
.../hadoop-yarn/hadoop-yarn-ui/app/app.js | 20 ++
.../hadoop-yarn-ui/app/components/.gitkeep | 0
.../app/components/app-attempt-table.js | 4 +
.../hadoop-yarn-ui/app/components/app-table.js | 4 +
.../hadoop-yarn-ui/app/components/bar-chart.js | 104 +++++++
.../app/components/base-chart-component.js | 109 ++++++++
.../app/components/container-table.js | 4 +
.../app/components/donut-chart.js | 148 ++++++++++
.../app/components/item-selector.js | 21 ++
.../app/components/queue-configuration-table.js | 4 +
.../app/components/queue-navigator.js | 4 +
.../hadoop-yarn-ui/app/components/queue-view.js | 272 +++++++++++++++++++
.../app/components/simple-table.js | 30 ++
.../app/components/timeline-view.js | 250 +++++++++++++++++
.../app/components/tree-selector.js | 257 ++++++++++++++++++
.../hadoop-yarn-ui/app/controllers/.gitkeep | 0
.../app/controllers/cluster-overview.js | 5 +
.../hadoop-yarn-ui/app/controllers/yarn-apps.js | 4 +
.../app/controllers/yarn-queue.js | 6 +
.../hadoop-yarn-ui/app/helpers/.gitkeep | 0
.../hadoop-yarn/hadoop-yarn-ui/app/index.html | 25 ++
.../hadoop-yarn-ui/app/models/.gitkeep | 0
.../hadoop-yarn-ui/app/models/cluster-info.js | 13 +
.../hadoop-yarn-ui/app/models/cluster-metric.js | 115 ++++++++
.../app/models/yarn-app-attempt.js | 44 +++
.../hadoop-yarn-ui/app/models/yarn-app.js | 65 +++++
.../hadoop-yarn-ui/app/models/yarn-container.js | 39 +++
.../hadoop-yarn-ui/app/models/yarn-queue.js | 76 ++++++
.../hadoop-yarn-ui/app/models/yarn-user.js | 8 +
.../hadoop-yarn/hadoop-yarn-ui/app/router.js | 16 ++
.../hadoop-yarn-ui/app/routes/.gitkeep | 0
.../app/routes/cluster-overview.js | 11 +
.../app/routes/yarn-app-attempt.js | 21 ++
.../hadoop-yarn-ui/app/routes/yarn-app.js | 10 +
.../hadoop-yarn-ui/app/routes/yarn-apps.js | 8 +
.../hadoop-yarn-ui/app/routes/yarn-queue.js | 20 ++
.../app/routes/yarn-queues/index.js | 5 +
.../app/routes/yarn-queues/queues-selector.js | 7 +
.../app/serializers/cluster-info.js | 29 ++
.../app/serializers/cluster-metric.js | 29 ++
.../app/serializers/yarn-app-attempt.js | 49 ++++
.../hadoop-yarn-ui/app/serializers/yarn-app.js | 66 +++++
.../app/serializers/yarn-container.js | 54 ++++
.../app/serializers/yarn-queue.js | 127 +++++++++
.../hadoop-yarn-ui/app/styles/app.css | 141 ++++++++++
.../app/templates/application.hbs | 25 ++
.../app/templates/cluster-overview.hbs | 56 ++++
.../app/templates/components/.gitkeep | 0
.../templates/components/app-attempt-table.hbs | 28 ++
.../app/templates/components/app-table.hbs | 62 +++++
.../templates/components/container-table.hbs | 36 +++
.../components/queue-configuration-table.hbs | 40 +++
.../templates/components/queue-navigator.hbs | 18 ++
.../app/templates/components/timeline-view.hbs | 35 +++
.../app/templates/yarn-app-attempt.hbs | 12 +
.../hadoop-yarn-ui/app/templates/yarn-app.hbs | 145 ++++++++++
.../hadoop-yarn-ui/app/templates/yarn-apps.hbs | 3 +
.../hadoop-yarn-ui/app/templates/yarn-queue.hbs | 48 ++++
.../hadoop-yarn-ui/app/utils/converter.js | 74 +++++
.../hadoop-yarn-ui/app/utils/sorter.js | 15 +
.../hadoop-yarn/hadoop-yarn-ui/bower.json | 22 ++
.../hadoop-yarn-ui/config/environment.js | 47 ++++
.../hadoop-yarn-ui/ember-cli-build.js | 29 ++
.../hadoop-yarn/hadoop-yarn-ui/jsconfig.json | 6 +
.../hadoop-yarn/hadoop-yarn-ui/package.json | 44 +++
.../assets/images/datatables/Sorting icons.psd | Bin 0 -> 27490 bytes
.../public/assets/images/datatables/favicon.ico | Bin 0 -> 894 bytes
.../assets/images/datatables/sort_asc.png | Bin 0 -> 160 bytes
.../images/datatables/sort_asc_disabled.png | Bin 0 -> 148 bytes
.../assets/images/datatables/sort_both.png | Bin 0 -> 201 bytes
.../assets/images/datatables/sort_desc.png | Bin 0 -> 158 bytes
.../images/datatables/sort_desc_disabled.png | Bin 0 -> 146 bytes
.../hadoop-yarn-ui/public/crossdomain.xml | 15 +
.../hadoop-yarn-ui/public/robots.txt | 3 +
.../hadoop-yarn/hadoop-yarn-ui/testem.json | 12 +
.../hadoop-yarn/hadoop-yarn-ui/tests/.jshintrc | 52 ++++
.../hadoop-yarn-ui/tests/helpers/resolver.js | 11 +
.../hadoop-yarn-ui/tests/helpers/start-app.js | 18 ++
.../hadoop-yarn/hadoop-yarn-ui/tests/index.html | 33 +++
.../hadoop-yarn-ui/tests/test-helper.js | 6 +
.../hadoop-yarn-ui/tests/unit/.gitkeep | 0
.../tests/unit/adapters/yarn-app-test.js | 12 +
.../tests/unit/controllers/yarn-apps-test.js | 12 +
.../tests/unit/controllers/yarn-queues-test.js | 12 +
.../tests/unit/mixins/charts-test.js | 12 +
.../tests/unit/models/yarn-app-test.js | 12 +
.../tests/unit/routes/yarn-apps-test.js | 11 +
.../tests/unit/serializers/yarn-app-test.js | 15 +
.../tests/unit/utils/converter-test.js | 10 +
.../hadoop-yarn/hadoop-yarn-ui/vendor/.gitkeep | 0
104 files changed, 3518 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.bowerrc
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.bowerrc b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.bowerrc
new file mode 100644
index 0000000..959e169
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.bowerrc
@@ -0,0 +1,4 @@
+{
+ "directory": "bower_components",
+ "analytics": false
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.editorconfig
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.editorconfig b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.editorconfig
new file mode 100644
index 0000000..47c5438
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.editorconfig
@@ -0,0 +1,34 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+
+[*]
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = space
+indent_size = 2
+
+[*.js]
+indent_style = space
+indent_size = 2
+
+[*.hbs]
+insert_final_newline = false
+indent_style = space
+indent_size = 2
+
+[*.css]
+indent_style = space
+indent_size = 2
+
+[*.html]
+indent_style = space
+indent_size = 2
+
+[*.{diff,md}]
+trim_trailing_whitespace = false
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.ember-cli
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.ember-cli b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.ember-cli
new file mode 100644
index 0000000..96bd287
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.ember-cli
@@ -0,0 +1,11 @@
+{
+ /**
+ Ember CLI sends analytics information by default. The data is completely
+ anonymous, but there are times when you might want to disable this behavior.
+
+ Setting `disableAnalytics` to true will prevent any data from being sent.
+ */
+ "disableAnalytics": false,
+ "liveReload": true,
+ "watcher": "polling"
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.gitignore
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.gitignore b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.gitignore
new file mode 100644
index 0000000..86fceae
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.gitignore
@@ -0,0 +1,17 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+/dist
+/tmp
+
+# dependencies
+/node_modules
+/bower_components
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage/*
+/libpeerconnection.log
+npm-debug.log
+testem.log
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.jshintrc
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.jshintrc b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.jshintrc
new file mode 100644
index 0000000..08096ef
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.jshintrc
@@ -0,0 +1,32 @@
+{
+ "predef": [
+ "document",
+ "window",
+ "-Promise"
+ ],
+ "browser": true,
+ "boss": true,
+ "curly": true,
+ "debug": false,
+ "devel": true,
+ "eqeqeq": true,
+ "evil": true,
+ "forin": false,
+ "immed": false,
+ "laxbreak": false,
+ "newcap": true,
+ "noarg": true,
+ "noempty": false,
+ "nonew": false,
+ "nomen": false,
+ "onevar": false,
+ "plusplus": false,
+ "regexp": false,
+ "undef": true,
+ "sub": true,
+ "strict": false,
+ "white": false,
+ "eqnull": true,
+ "esnext": true,
+ "unused": true
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.travis.yml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.travis.yml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.travis.yml
new file mode 100644
index 0000000..66dd107
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.travis.yml
@@ -0,0 +1,23 @@
+---
+language: node_js
+node_js:
+ - "0.12"
+
+sudo: false
+
+cache:
+ directories:
+ - node_modules
+
+before_install:
+ - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH
+ - "npm config set spin false"
+ - "npm install -g npm@^2"
+
+install:
+ - npm install -g bower
+ - npm install
+ - bower install
+
+script:
+ - npm test
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.watchmanconfig
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.watchmanconfig b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.watchmanconfig
new file mode 100644
index 0000000..5e9462c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/.watchmanconfig
@@ -0,0 +1,3 @@
+{
+ "ignore_dirs": ["tmp"]
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/README.md
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/README.md b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/README.md
new file mode 100644
index 0000000..d5cba6e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/README.md
@@ -0,0 +1,24 @@
+# Yarn-ui
+*This is a WIP project, nobody should use it in production.*
+
+## Prerequisites
+
+You will need the following things properly installed on your computer.
+
+* Install Node.js with NPM: https://nodejs.org/download/
+* After Node.js installed, install bower: `npm install -g bower`.
+* Install Ember-cli: `npm install -g ember-cli`
+
+## Installation
+
+* Goto root directory of yarn-ui project: `hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui`
+* `npm install && bower install`, it will take a while to finish.
+
+## Try it
+
+* Packaging and deploying Hadoop in this branch (You can use latest trunk after YARN-4417 committed to trunk)
+* Modify `app/adapters/yarn-app.js`, change `host` to your YARN RM web address
+* If you running YARN RM in your localhost, you should install `npm install -g corsproxy` and run `corsproxy` to avoid CORS errors. More details: `https://www.npmjs.com/package/corsproxy`. And the `host` of `app/adapters/yarn-app.js` should start with `localhost:1337`.
+* Run `ember server`
+* Visit your app at [http://localhost:4200](http://localhost:4200).
+
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
new file mode 100644
index 0000000..ef65792
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-info.js
@@ -0,0 +1,19 @@
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/localhost:8088', // configurable
+ namespace: 'ws/v1/cluster', // common const
+ pathForType(modelName) {
+ return ''; // move to some common place, return path by modelname.
+ },
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
new file mode 100644
index 0000000..d0f084c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/cluster-metric.js
@@ -0,0 +1,19 @@
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/localhost:8088', // configurable
+ namespace: 'ws/v1/cluster/metrics', // common const
+ pathForType(modelName) {
+ return ''; // move to some common place, return path by modelname.
+ },
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
new file mode 100644
index 0000000..3c95d64
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app-attempt.js
@@ -0,0 +1,31 @@
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/localhost:8088', // configurable
+ namespace: 'ws/v1/cluster', // common const
+
+ urlForQuery(query, modelName) {
+ var url = this._buildURL();
+ return url + '/apps/' + query.appId + "/appattempts";
+ },
+
+ urlForFindRecord(id, modelName, snapshot) {
+ var url = this._buildURL();
+ var url = url + '/apps/' +
+ Converter.attemptIdToAppId(id) + "/appattempts/" + id;
+ console.log(url);
+ return url;
+ },
+
+ ajax(url, method, hash) {
+ hash = {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
new file mode 100644
index 0000000..e1108be
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-app.js
@@ -0,0 +1,25 @@
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/localhost:8088', // configurable
+ namespace: 'ws/v1/cluster', // common const
+ pathForType(modelName) {
+ return 'apps'; // move to some common place, return path by modelname.
+ },
+ /*
+ urlForQuery(query, modelName) {
+ var url = this._buildURL();
+ return url + '/apps/' + query.appId + "/appattempts";
+ },
+ */
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
new file mode 100644
index 0000000..fe09f59
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-container.js
@@ -0,0 +1,42 @@
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ rmHost: 'http://localhost:1337/localhost:8088',
+ tsHost: 'http://localhost:1337/localhost:8188',
+ host: function() {
+ return undefined
+ }.property(),
+ rmNamespace: 'ws/v1/cluster',
+ tsNamespace: 'ws/v1/applicationhistory',
+ namespace: function() {
+ return undefined
+ }.property(),
+
+ urlForQuery(query, modelName) {
+ if (query.is_rm) {
+ this.set("host", this.rmHost);
+ this.set("namespace", this.rmNamespace);
+ } else {
+ this.set("host", this.tsHost);
+ this.set("namespace", this.tsNamespace);
+ }
+
+ var url = this._buildURL();
+ url = url + '/apps/' + Converter.attemptIdToAppId(query.app_attempt_id)
+ + "/appattempts/" + query.app_attempt_id + "/containers";
+ console.log(url);
+ return url;
+ },
+
+ ajax(url, method, hash) {
+ hash = {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
new file mode 100644
index 0000000..39cf796
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/adapters/yarn-queue.js
@@ -0,0 +1,19 @@
+import DS from 'ember-data';
+
+export default DS.JSONAPIAdapter.extend({
+ headers: {
+ Accept: 'application/json'
+ },
+ host: 'http://localhost:1337/localhost:8088', // configurable
+ namespace: 'ws/v1/cluster', // common const
+ pathForType(modelName) {
+ return 'scheduler'; // move to some common place, return path by modelname.
+ },
+ ajax(url, method, hash) {
+ hash = hash || {};
+ hash.crossDomain = true;
+ hash.xhrFields = {withCredentials: true};
+ hash.targetServer = "RM";
+ return this._super(url, method, hash);
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/app.js
new file mode 100644
index 0000000..ff28ecf
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/app.js
@@ -0,0 +1,20 @@
+import Ember from 'ember';
+import Resolver from 'ember/resolver';
+import loadInitializers from 'ember/load-initializers';
+import config from './config/environment';
+import Sorter from 'yarn-ui/utils/sorter';
+
+var App;
+
+Ember.MODEL_FACTORY_INJECTIONS = true;
+
+App = Ember.Application.extend({
+ modulePrefix: config.modulePrefix,
+ podModulePrefix: config.podModulePrefix,
+ Resolver: Resolver
+});
+
+loadInitializers(App, config.modulePrefix);
+Sorter.initDataTableSorter();
+
+export default App;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/.gitkeep
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-attempt-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-attempt-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-attempt-table.js
new file mode 100644
index 0000000..aff0493
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-attempt-table.js
@@ -0,0 +1,4 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-table.js
new file mode 100644
index 0000000..aff0493
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/app-table.js
@@ -0,0 +1,4 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/bar-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/bar-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/bar-chart.js
new file mode 100644
index 0000000..f24e947
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/bar-chart.js
@@ -0,0 +1,104 @@
+import Ember from 'ember';
+import BaseChartComponent from 'yarn-ui/components/base-chart-component';
+
+export default BaseChartComponent.extend({
+ // data:
+ // [{label=label1, value=value1}, ...]
+ // ...
+ renderBarChart: function(data, title, textWidth = 50) {
+ var g = this.chart.g;
+ var layout = this.getLayout();
+ this.renderTitleAndBG(g, title, layout);
+
+ var maxValue = -1;
+ for (var i = 0; i < data.length; i++) {
+ if (data[i] instanceof Array) {
+ if (data[i][0].value > maxValue) {
+ maxValue = data[i][0].value;
+ }
+ } else {
+ if (data[i].value > maxValue) {
+ maxValue = data[i].value;
+ }
+ }
+ }
+
+ var singleBarHeight = 30;
+
+ // 50 is for text
+ var maxBarWidth = layout.x2 - layout.x1 - 2 * layout.margin - textWidth - 50;
+
+ // 30 is for title
+ var maxBarsHeight = layout.y2 - layout.y1 - 2 * layout.margin - 30;
+ var gap = (maxBarsHeight - data.length * singleBarHeight) / (data.length -
+ 1);
+
+ var xScaler = d3.scale.linear()
+ .domain([0, maxValue])
+ .range([0, maxBarWidth]);
+
+ // show bar text
+ for (var i = 0; i < data.length; i++) {
+ g.append("text")
+ .text(
+ function() {
+ return data[i].label;
+ })
+ .attr("y", function() {
+ return layout.y1 + singleBarHeight / 2 + layout.margin + (gap +
+ singleBarHeight) * i + 30;
+ })
+ .attr("x", layout.x1 + layout.margin);
+ }
+
+ // show bar
+ var bar = g.selectAll("bars")
+ .data(data)
+ .enter()
+ .append("rect")
+ .attr("y", function(d, i) {
+ return layout.y1 + 30 + layout.margin + (gap + singleBarHeight) * i;
+ })
+ .attr("x", layout.x1 + layout.margin + textWidth)
+ .attr("height", singleBarHeight)
+ .attr("fill", function(d, i) {
+ return this.colors[i];
+ }.bind(this))
+ .attr("width", 0);
+
+ this.bindTooltip(bar);
+
+ bar.transition()
+ .duration(500)
+ .attr("width", function(d) {
+ var w;
+ w = xScaler(d.value);
+ // At least each item has 3 px
+ w = Math.max(w, 3);
+ return w;
+ });
+
+ // show bar value
+ for (var i = 0; i < data.length; i++) {
+ g.append("text")
+ .text(
+ function() {
+ return data[i].value;
+ })
+ .attr("y", function() {
+ return layout.y1 + singleBarHeight / 2 + layout.margin + (gap +
+ singleBarHeight) * i + 30;
+ })
+ .attr("x", layout.x1 + layout.margin + textWidth + 15 + xScaler(data[i].value));
+ }
+ },
+
+ draw: function() {
+ this.initChart();
+ this.renderBarChart(this.get("data"), this.get("title"), this.get("textWidth"));
+ },
+
+ didInsertElement: function() {
+ this.draw();
+ },
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/base-chart-component.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/base-chart-component.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/base-chart-component.js
new file mode 100644
index 0000000..acf2b5f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/base-chart-component.js
@@ -0,0 +1,109 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+ chart: undefined,
+ tooltip : undefined,
+ colors: d3.scale.category10().range(),
+
+ initChart: function() {
+ this.chart = {
+ svg: undefined,
+ g: undefined,
+ h: 0,
+ w: 0,
+ tooltip: undefined
+ };
+
+ // Init tooltip if it is not initialized
+ this.tooltip = d3.select("#chart-tooltip");
+ if (!this.tooltip) {
+ this.tooltip = d3.select("body")
+ .append("div")
+ .attr("class", "tooltip")
+ .attr("id", "chart-tooltip")
+ .style("opacity", 0);
+ }
+
+ // Init svg
+ var svg = this.chart.svg;
+ if (svg) {
+ svg.remove();
+ }
+
+ var parentId = this.get("parentId");
+ var parent = d3.select("#" + parentId);
+ var bbox = parent.node().getBoundingClientRect();
+ this.chart.w = bbox.width - 30;
+
+ var ratio = 0.75; // 4:3 by default
+ if (this.get("ratio")) {
+ ratio = this.get("ratio");
+ }
+ this.chart.h = bbox.width * ratio;
+
+ if (this.get("maxHeight")) {
+ this.chart.h = Math.min(this.get("maxHeight"), this.chart.h);
+ }
+
+ this.chart.svg = parent.append("svg")
+ .attr("width", this.chart.w)
+ .attr("height", this.chart.h);
+
+ this.chart.g = this.chart.svg.append("g");
+ },
+
+ renderTitleAndBG: function(g, title, layout) {
+ var bg = g.append("g");
+ bg.append("text")
+ .text(title)
+ .attr("x", (layout.x1 + layout.x2) / 2)
+ .attr("y", layout.y1 + layout.margin + 20)
+ .attr("class", "chart-title");
+
+ bg.append("rect")
+ .attr("x", layout.x1)
+ .attr("y", layout.y1)
+ .attr("width", layout.x2 - layout.x1)
+ .attr("height", layout.y2 - layout.y1)
+ .attr("class", "chart-frame");
+ },
+
+ bindTooltip: function(d) {
+ d.on("mouseover", function(d) {
+ this.tooltip
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mousemove", function(d) {
+ // Handle pie chart case
+ var data = d;
+ if (d.data) {
+ data = d.data;
+ }
+
+ this.tooltip.style("opacity", .9);
+ this.tooltip.html(data.label + " = " + data.value)
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mouseout", function(d) {
+ this.tooltip.style("opacity", 0);
+ }.bind(this));
+ },
+
+ getLayout: function() {
+ var x1 = 0;
+ var y1 = 0;
+ var x2 = this.chart.w;
+ var y2 = this.chart.h;
+
+ var layout = {
+ x1: x1,
+ y1: y1,
+ x2: x2 - 10,
+ y2: y2 - 10,
+ margin: 10
+ };
+ return layout;
+ },
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/container-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/container-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/container-table.js
new file mode 100644
index 0000000..aff0493
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/container-table.js
@@ -0,0 +1,4 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/donut-chart.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/donut-chart.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/donut-chart.js
new file mode 100644
index 0000000..608b0c1
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/donut-chart.js
@@ -0,0 +1,148 @@
+import Ember from 'ember';
+import BaseChartComponent from 'yarn-ui/components/base-chart-component';
+
+export default BaseChartComponent.extend({
+ /*
+ * data = [{label="xx", value=},{...}]
+ */
+ renderDonutChart: function(data, title, showLabels = false,
+ middleLabel = "Total", middleValue = undefined) {
+ var g = this.chart.g;
+ var layout = this.getLayout();
+ this.renderTitleAndBG(g, title, layout);
+
+ var total = 0;
+ var allZero = true;
+ for (var i = 0; i < data.length; i++) {
+ total += data[i].value;
+ if (data[i].value > 1e-6) {
+ allZero = false;
+ }
+ }
+
+ if (!middleValue) {
+ middleValue = total;
+ }
+
+ //Width and height
+ var h = layout.y2 - layout.y1;
+
+ // 50 is for title
+ var outerRadius = (h - 50 - 2 * layout.margin) / 2;
+ var innerRadius = outerRadius * 0.618;
+ var arc = d3.svg.arc()
+ .innerRadius(innerRadius)
+ .outerRadius(outerRadius);
+
+ var cx;
+ var cy = layout.y1 + 50 + layout.margin + outerRadius;
+ if (showLabels) {
+ cx = layout.x1 + layout.margin + outerRadius;
+ } else {
+ cx = (layout.x1 + layout.x2) / 2;
+ }
+
+ var pie = d3.layout.pie();
+ pie.sort(null);
+ pie.value(function(d) {
+ var v = d.value;
+ // make sure it > 0
+ v = Math.max(v, 1e-6);
+ return v;
+ });
+
+ //Set up groups
+ var arcs = g
+ .selectAll("g.arc")
+ .data(pie(data))
+ .enter()
+ .append("g")
+ .attr("class", "arc")
+ .attr("transform", "translate(" + cx + "," + cy + ")");
+
+ function tweenPie(finish) {
+ var start = {
+ startAngle: 0,
+ endAngle: 0
+ };
+ var i = d3.interpolate(start, finish);
+ return function(d) {
+ return arc(i(d));
+ };
+ }
+
+ //Draw arc paths
+ var path = arcs.append("path")
+ .attr("fill", function(d, i) {
+ if (d.value > 1e-6) {
+ return this.colors[i];
+ } else {
+ return "white";
+ }
+ }.bind(this))
+ .attr("d", arc)
+ .attr("stroke", function(d, i) {
+ if (allZero) {
+ return this.colors[i];
+ }
+ }.bind(this))
+ .attr("stroke-dasharray", function(d, i) {
+ if (d.value <= 1e-6) {
+ return "10,10";
+ }
+ }.bind(this));
+ this.bindTooltip(path);
+
+ // Show labels
+ if (showLabels) {
+ var lx = layout.x1 + layout.margin + outerRadius * 2 + 30;
+ var squareW = 15;
+ var margin = 10;
+
+ var select = g.selectAll(".rect")
+ .data(data)
+ .enter();
+ select.append("rect")
+ .attr("fill", function(d, i) {
+ return this.colors[i];
+ }.bind(this))
+ .attr("x", lx)
+ .attr("y", function(d, i) {
+ return layout.y1 + 50 + (squareW + margin) * i + layout.margin;
+ })
+ .attr("width", squareW)
+ .attr("height", squareW);
+ select.append("text")
+ .attr("x", lx + squareW + margin)
+ .attr("y", function(d, i) {
+ return layout.y1 + 50 + (squareW + margin) * i + layout.margin + squareW / 2;
+ })
+ .text(function(d) {
+ return d.label + ' = ' + d.value;
+ });
+ }
+
+ if (middleLabel) {
+ var highLightColor = this.colors[0];
+ g.append("text").text(middleLabel).attr("x", cx).attr("y", cy - 10).
+ attr("class", "donut-highlight-text").attr("fill", highLightColor);
+ g.append("text").text(middleValue).attr("x", cx).attr("y", cy + 20).
+ attr("class", "donut-highlight-text").attr("fill", highLightColor).
+ style("font-size", "30px");
+ }
+
+ path.transition()
+ .duration(500)
+ .attrTween('d', tweenPie);
+ },
+
+ draw: function() {
+ this.initChart();
+ this.renderDonutChart(this.get("data"), this.get("title"), this.get("showLabels"),
+ this.get("middleLabel"), this.get("middleValue"));
+ },
+
+ didInsertElement: function() {
+ this.draw();
+ },
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/item-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/item-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/item-selector.js
new file mode 100644
index 0000000..a18ccae
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/item-selector.js
@@ -0,0 +1,21 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+ didInsertElement: function() {
+ $(".js-example-basic-single").select2(
+ {
+ width: '100%',
+ placeholder: "Select a queue"
+ });
+ var elementId = this.get("element-id");
+ var prefix = this.get("prefix");
+
+ var element = d3.select("#" + elementId);
+
+ if (element) {
+ this.get("model").forEach(function(o) {
+ element.append("option").attr("value", o.get("name")).text(prefix + o.get("name"));
+ });
+ }
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-configuration-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-configuration-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-configuration-table.js
new file mode 100644
index 0000000..aff0493
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-configuration-table.js
@@ -0,0 +1,4 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-navigator.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-navigator.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-navigator.js
new file mode 100644
index 0000000..aff0493
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-navigator.js
@@ -0,0 +1,4 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-view.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-view.js
new file mode 100644
index 0000000..c1fd8ff
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/queue-view.js
@@ -0,0 +1,272 @@
+import Ember from 'ember';
+import ChartUtilsMixin from 'yarn-ui/mixins/charts-utils';
+
+export default Ember.Component.extend(ChartUtilsMixin, {
+ queues: {
+ data: undefined,
+ foldedQueues: {},
+ selectedQueueCircle: undefined,
+ maxDepth: -1,
+ },
+
+ queueColors: d3.scale.category20().range(),
+
+ renderQueue: function(now, depth, sequence) {
+ if (depth > this.queues.maxDepth) {
+ this.queues.maxDepth = depth;
+ }
+
+ var cx = 20 + depth * 30;
+ var cy = 20 + sequence * 30;
+ var name = now.get("name");
+
+ var g = this.queues.dataGroup.append("g")
+ .attr("id", "queue-" + name + "-g");
+
+ var folded = this.queues.foldedQueues[name];
+ var isParentQueue = false;
+
+ // render its children
+ var children = [];
+ var childrenNames = now.get("children");
+ if (childrenNames) {
+ childrenNames.forEach(function(name) {
+ isParentQueue = true;
+ var child = this.queues.data[name];
+ if (child) {
+ children.push(child);
+ }
+ }.bind(this));
+ }
+ if (folded) {
+ children = [];
+ }
+ var linefunction = d3.svg.line()
+ .interpolate("basis")
+ .x(function(d) {
+ return d.x;
+ })
+ .y(function(d) {
+ return d.y;
+ });
+
+ for (var i = 0; i < children.length; i++) {
+ sequence = sequence + 1;
+ // Get center of children queue
+ var cc = this.renderQueue(children[i],
+ depth + 1, sequence);
+ g.append("path")
+ .attr("class", "queue")
+ .attr("d", linefunction([{
+ x: cx,
+ y: cy
+ }, {
+ x: cc.x - 20,
+ y: cc.y
+ }, cc]));
+ }
+
+ var circle = g.append("circle")
+ .attr("cx", cx)
+ .attr("cy", cy)
+ .attr("class", "queue");
+
+ circle.on('mouseover', function() {
+ circle.style("fill", this.queueColors[1]);
+ }.bind(this));
+ circle.on('mouseout', function() {
+ if (circle != this.queues.selectedQueueCircle) {
+ circle.style("fill", this.queueColors[0]);
+ }
+ }.bind(this));
+ circle.on('click', function() {
+ circle.style("fill", this.queueColors[2]);
+ var pre = this.queues.selectedQueueCircle;
+ this.queues.selectedQueueCircle = circle;
+ if (pre) {
+ pre.on('mouseout')();
+ }
+ this.renderCharts(name);
+ }.bind(this));
+ circle.on('dblclick', function() {
+ if (!isParentQueue) {
+ return;
+ }
+
+ if (this.queues.foldedQueues[name]) {
+ delete this.queues.foldedQueues[name];
+ } else {
+ this.queues.foldedQueues[name] = now;
+ }
+ this.renderQueues();
+ }.bind(this));
+
+ var text = name;
+ if (folded) {
+ text = name + " (+)";
+ }
+
+ // print queue's name
+ g.append("text")
+ .attr("x", cx + 30)
+ .attr("y", cy + 5)
+ .text(text)
+ .attr("class", "queue");
+
+ return {
+ x: cx,
+ y: cy
+ };
+ },
+
+ renderQueues: function() {
+ if (this.queues.dataGroup) {
+ this.queues.dataGroup.remove();
+ }
+ // render queues
+ this.queues.dataGroup = this.canvas.svg.append("g")
+ .attr("id", "queues-g");
+ var rootQueue = undefined;
+
+ if (this.queues.data) {
+ this.renderQueue(this.queues.data['root'], 0, 0);
+
+ }
+ },
+
+ draw: function() {
+ this.queues.data = {};
+ this.get("model")
+ .forEach(function(o) {
+ this.queues.data[o.id] = o;
+ }.bind(this));
+
+ // get w/h of the svg
+ var bbox = d3.select("#main-container")
+ .node()
+ .getBoundingClientRect();
+ this.canvas.w = bbox.width;
+ this.canvas.h = Math.max(Object.keys(this.queues.data)
+ .length * 35, 1500);
+
+ this.canvas.svg = d3.select("#main-container")
+ .append("svg")
+ .attr("width", this.canvas.w)
+ .attr("height", this.canvas.h)
+ .attr("id", "main-svg");
+
+ this.renderBackground();
+
+ this.renderQueues();
+ this.renderCharts("root");
+ },
+
+ didInsertElement: function() {
+ this.draw();
+ },
+
+ /*
+ * data = [{label="xx", value=},{...}]
+ */
+ renderTable: function(data, title, layout) {
+ d3.select("#main-svg")
+ .append('table')
+ .selectAll('tr')
+ .data(data)
+ .enter()
+ .append('tr')
+ .selectAll('td')
+ .data(function(d) {
+ return d;
+ })
+ .enter()
+ .append('td')
+ .text(function(d) {
+ return d;
+ });
+ },
+
+ renderQueueCapacities: function(queue, layout) {
+ // Render bar chart
+ this.renderBarChart(this.charts.g, [{
+ label: "Cap",
+ value: queue.get("capacity")
+ }, {
+ label: "MaxCap",
+ value: queue.get("maxCapacity")
+ }, {
+ label: "UsedCap",
+ value: queue.get("usedCapacity")
+ }], "Queue Capacities", layout, 60);
+ },
+
+ renderChildrenCapacities: function(queue, layout) {
+ var data = [];
+ var children = queue.get("children");
+ if (children) {
+ for (var i = 0; i < children.length; i++) {
+ var child = this.queues.data[children[i]];
+ data.push({
+ label: child.get("name"),
+ value: child.get("capacity")
+ });
+ }
+ }
+
+ this.renderDonutChart(this.charts.g, data, "Children Capacities", layout, true);
+ },
+
+ renderChildrenUsedCapacities: function(queue, layout) {
+ var data = [];
+ var children = queue.get("children");
+ if (children) {
+ for (var i = 0; i < children.length; i++) {
+ var child = this.queues.data[children[i]];
+ data.push({
+ label: child.get("name"),
+ value: child.get("usedCapacity")
+ });
+ }
+ }
+
+ this.renderDonutChart(this.charts.g, data, "Children Used Capacities", layout, true);
+ },
+
+ renderLeafQueueUsedCapacities: function(layout) {
+ var leafQueueUsedCaps = [];
+ for (var queueName in this.queues.data) {
+ var q = this.queues.data[queueName];
+ if ((!q.get("children")) || q.get("children")
+ .length == 0) {
+ // it's a leafqueue
+ leafQueueUsedCaps.push({
+ label: q.get("name"),
+ value: q.get("usedCapacity")
+ });
+ }
+ }
+
+ this.renderDonutChart(this.charts.g, leafQueueUsedCaps, "LeafQueues Used Capacities",
+ layout, true);
+ },
+
+ renderCharts: function(queueName) {
+ this.charts.leftBannerLen = this.queues.maxDepth * 30 + 100;
+ this.initCharts();
+
+ var queue = this.queues.data[queueName];
+ var idx = 0;
+
+ if (queue.get("name") == "root") {
+ this.renderLeafQueueUsedCapacities(this.getLayout(idx++));
+ }
+ if (queue.get("name") != "root") {
+ this.renderQueueCapacities(queue, this.getLayout(idx++));
+ }
+ if (queue.get("children") && queue.get("children")
+ .length > 0) {
+ this.renderChildrenCapacities(queue, this.getLayout(idx++));
+ this.renderChildrenUsedCapacities(queue, this.getLayout(idx++));
+ }
+ },
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
new file mode 100644
index 0000000..ed8ff9b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/simple-table.js
@@ -0,0 +1,30 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+ didInsertElement: function() {
+ var paging = this.get("paging") ? true : this.get("paging");
+ var ordering = this.get("ordering") ? true : this.get("ordering");
+ var info = this.get("info") ? true : this.get("info");
+ var bFilter = this.get("bFilter") ? true : this.get("bFilter");
+
+ var colDefs = [];
+ if (this.get("colTypes")) {
+ var typesArr = this.get("colTypes").split(' ');
+ var targetsArr = this.get("colTargets").split(' ');
+ for (var i = 0; i < typesArr.length; i++) {
+ colDefs.push({
+ type: typesArr[i],
+ targets: parseInt(targetsArr[i])
+ });
+ }
+ }
+
+ $('#' + this.get('table-id')).DataTable({
+ "paging": paging,
+ "ordering": ordering,
+ "info": info,
+ "bFilter": bFilter,
+ columnDefs: colDefs
+ });
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js
new file mode 100644
index 0000000..fe402bb
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/timeline-view.js
@@ -0,0 +1,250 @@
+import Ember from 'ember';
+import Converter from 'yarn-ui/utils/converter';
+
+export default Ember.Component.extend({
+ canvas: {
+ svg: undefined,
+ h: 0,
+ w: 0,
+ tooltip: undefined
+ },
+
+ clusterMetrics: undefined,
+ modelArr: [],
+ colors: d3.scale.category10().range(),
+ _selected: undefined,
+
+ selected: function() {
+ return this._selected;
+ }.property(),
+
+ tableComponentName: function() {
+ return "app-attempt-table";
+ }.property(),
+
+ setSelected: function(d) {
+ if (this._selected == d) {
+ return;
+ }
+
+ // restore color
+ if (this._selected) {
+ var dom = d3.select("#timeline-bar-" + this._selected.get("id"));
+ dom.attr("fill", this.colors[0]);
+ }
+
+ this._selected = d;
+ this.set("selected", d);
+ dom = d3.select("#timeline-bar-" + d.get("id"));
+ dom.attr("fill", this.colors[1]);
+ },
+
+ getPerItemHeight: function() {
+ var arrSize = this.modelArr.length;
+
+ if (arrSize < 20) {
+ return 30;
+ } else if (arrSize < 100) {
+ return 10;
+ } else {
+ return 2;
+ }
+ },
+
+ getPerItemGap: function() {
+ var arrSize = this.modelArr.length;
+
+ if (arrSize < 20) {
+ return 5;
+ } else if (arrSize < 100) {
+ return 1;
+ } else {
+ return 1;
+ }
+ },
+
+ getCanvasHeight: function() {
+ return (this.getPerItemHeight() + this.getPerItemGap()) * this.modelArr.length + 200;
+ },
+
+ draw: function(start, end) {
+ // get w/h of the svg
+ var bbox = d3.select("#" + this.get("parent-id"))
+ .node()
+ .getBoundingClientRect();
+ this.canvas.w = bbox.width;
+ this.canvas.h = this.getCanvasHeight();
+
+ this.canvas.svg = d3.select("#" + this.get("parent-id"))
+ .append("svg")
+ .attr("width", this.canvas.w)
+ .attr("height", this.canvas.h)
+ .attr("id", this.get("my-id"));
+ this.renderTimeline(start, end);
+ },
+
+ renderTimeline: function(start, end) {
+ var border = 30;
+ var singleBarHeight = this.getPerItemHeight();
+ var gap = this.getPerItemGap();
+ var textWidth = 50;
+ /*
+ start-time end-time
+ |--------------------------------------|
+ ==============
+ ==============
+ ==============
+ ===============
+ */
+ var xScaler = d3.scale.linear()
+ .domain([start, end])
+ .range([0, this.canvas.w - 2 * border - textWidth]);
+
+ /*
+ * Render frame of timeline view
+ */
+ this.canvas.svg.append("line")
+ .attr("x1", border + textWidth)
+ .attr("y1", border - 5)
+ .attr("x2", this.canvas.w - border)
+ .attr("y2", border - 5)
+ .attr("class", "chart");
+
+ this.canvas.svg.append("line")
+ .attr("x1", border + textWidth)
+ .attr("y1", border - 10)
+ .attr("x2", border + textWidth)
+ .attr("y2", border - 5)
+ .attr("class", "chart");
+
+ this.canvas.svg.append("line")
+ .attr("x1", this.canvas.w - border)
+ .attr("y1", border - 10)
+ .attr("x2", this.canvas.w - border)
+ .attr("y2", border - 5)
+ .attr("class", "chart");
+
+ this.canvas.svg.append("text")
+ .text(Converter.timeStampToDate(start))
+ .attr("y", border - 15)
+ .attr("x", border + textWidth)
+ .attr("class", "bar-chart-text")
+ .attr("text-anchor", "left");
+
+ this.canvas.svg.append("text")
+ .text(Converter.timeStampToDate(end))
+ .attr("y", border - 15)
+ .attr("x", this.canvas.w - border)
+ .attr("class", "bar-chart-text")
+ .attr("text-anchor", "end");
+
+ // show bar
+ var bar = this.canvas.svg.selectAll("bars")
+ .data(this.modelArr)
+ .enter()
+ .append("rect")
+ .attr("y", function(d, i) {
+ return border + (gap + singleBarHeight) * i;
+ })
+ .attr("x", function(d, i) {
+ return border + textWidth + xScaler(d.get("startTs"));
+ })
+ .attr("height", singleBarHeight)
+ .attr("fill", function(d, i) {
+ return this.colors[0];
+ }.bind(this))
+ .attr("width", function(d, i) {
+ var finishedTs = xScaler(d.get("finishedTs"));
+ finishedTs = finishedTs > 0 ? finishedTs : xScaler(end);
+ return finishedTs - xScaler(d.get("startTs"));
+ })
+ .attr("id", function(d, i) {
+ return "timeline-bar-" + d.get("id");
+ });
+ bar.on("click", function(d) {
+ this.setSelected(d);
+ }.bind(this));
+
+ this.bindTooltip(bar);
+
+ if (this.modelArr.length <= 20) {
+ // show bar texts
+ for (var i = 0; i < this.modelArr.length; i++) {
+ this.canvas.svg.append("text")
+ .text(this.modelArr[i].get(this.get("label")))
+ .attr("y", border + (gap + singleBarHeight) * i + singleBarHeight / 2)
+ .attr("x", border)
+ .attr("class", "bar-chart-text");
+ }
+ }
+ },
+
+ bindTooltip: function(d) {
+ d.on("mouseover", function(d) {
+ this.tooltip
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mousemove", function(d) {
+ this.tooltip.style("opacity", .9);
+ this.tooltip.html(d.get("tooltipLabel"))
+ .style("left", (d3.event.pageX) + "px")
+ .style("top", (d3.event.pageY - 28) + "px");
+ }.bind(this))
+ .on("mouseout", function(d) {
+ this.tooltip.style("opacity", 0);
+ }.bind(this));
+ },
+
+ initTooltip: function() {
+ this.tooltip = d3.select("body")
+ .append("div")
+ .attr("class", "tooltip")
+ .attr("id", "chart-tooltip")
+ .style("opacity", 0);
+ },
+
+ didInsertElement: function() {
+ // init tooltip
+ this.initTooltip();
+
+ // init model
+ if (this.get("rmModel")) {
+ this.get("rmModel").forEach(function(o) {
+ this.modelArr.push(o);
+ }.bind(this));
+ }
+
+ if (this.get("tsModel")) {
+ this.get("tsModel").forEach(function(o) {
+ this.modelArr.push(o);
+ }.bind(this));
+ }
+
+ this.modelArr.sort(function(a, b) {
+ var tsA = a.get("startTs");
+ var tsB = b.get("startTs");
+
+ return tsA - tsB;
+ });
+ if (this.modelArr.length > 0) {
+ var begin = this.modelArr[0].get("startTs");
+ }
+ var end = 0;
+ for (var i = 0; i < this.modelArr.length; i++) {
+ var ts = this.modelArr[i].get("finishedTs");
+ if (ts > end) {
+ end = ts;
+ }
+ }
+ if (end < begin) {
+ end = Date.now();
+ }
+
+ this.draw(begin, end);
+
+ if (this.modelArr.length > 0) {
+ this.setSelected(this.modelArr[0]);
+ }
+ },
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/tree-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/tree-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/tree-selector.js
new file mode 100644
index 0000000..470deaf
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/components/tree-selector.js
@@ -0,0 +1,257 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+ // Map: <queue-name, queue>
+ map : undefined,
+
+ // Normalized data for d3
+ treeData: undefined,
+
+ // folded queues, folded[<queue-name>] == true means <queue-name> is folded
+ foldedQueues: { },
+
+ // maxDepth
+ maxDepth: 0,
+
+ // num of leaf queue, folded queue is treated as leaf queue
+ numOfLeafQueue: 0,
+
+ // mainSvg
+ mainSvg: undefined,
+
+ // Init data
+ initData: function() {
+ this.map = { };
+ this.treeData = { };
+ this.maxDepth = 0;
+ this.numOfLeafQueue = 0;
+
+ this.get("model")
+ .forEach(function(o) {
+ this.map[o.id] = o;
+ }.bind(this));
+
+ var selected = this.get("selected");
+
+ this.initQueue("root", 1, this.treeData);
+ },
+
+ // get Children array of given queue
+ getChildrenNamesArray: function(q) {
+ var namesArr = [];
+
+ // Folded queue's children is empty
+ if (this.foldedQueues[q.get("name")]) {
+ return namesArr;
+ }
+
+ var names = q.get("children");
+ if (names) {
+ names.forEach(function(name) {
+ namesArr.push(name);
+ });
+ }
+
+ return namesArr;
+ },
+
+ // Init queues
+ initQueue: function(queueName, depth, node) {
+ if ((!queueName) || (!this.map[queueName])) {
+ // Queue is not existed
+ return;
+ }
+
+ if (depth > this.maxDepth) {
+ this.maxDepth = this.maxDepth + 1;
+ }
+
+ var queue = this.map[queueName];
+
+ var names = this.getChildrenNamesArray(queue);
+
+ node.name = queueName;
+ node.parent = queue.get("parent");
+ node.queueData = queue;
+
+ if (names.length > 0) {
+ node.children = [];
+
+ names.forEach(function(name) {
+ var childQueueData = {};
+ node.children.push(childQueueData);
+ this.initQueue(name, depth + 1, childQueueData);
+ }.bind(this));
+ } else {
+ this.numOfLeafQueue = this.numOfLeafQueue + 1;
+ }
+ },
+
+ update: function(source, root, tree, diagonal) {
+ var duration = 300;
+ var i = 0;
+
+ // Compute the new tree layout.
+ var nodes = tree.nodes(root).reverse();
+ var links = tree.links(nodes);
+
+ // Normalize for fixed-depth.
+ nodes.forEach(function(d) { d.y = d.depth * 200; });
+
+ // Update the nodes\u2026
+ var node = this.mainSvg.selectAll("g.node")
+ .data(nodes, function(d) { return d.id || (d.id = ++i); });
+
+ // Enter any new nodes at the parent's previous position.
+ var nodeEnter = node.enter().append("g")
+ .attr("class", "node")
+ .attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
+ .on("click", function(d,i){
+ if (d.queueData.get("name") != this.get("selected")) {
+ document.location.href = "yarnQueue/" + d.queueData.get("name");
+ }
+ }.bind(this));
+ // .on("click", click);
+
+ nodeEnter.append("circle")
+ .attr("r", 1e-6)
+ .style("fill", function(d) {
+ var usedCap = d.queueData.get("usedCapacity");
+ if (usedCap <= 60.0) {
+ return "LimeGreen";
+ } else if (usedCap <= 100.0) {
+ return "DarkOrange";
+ } else {
+ return "LightCoral";
+ }
+ });
+
+ // append percentage
+ nodeEnter.append("text")
+ .attr("x", function(d) { return 0; })
+ .attr("dy", ".35em")
+ .attr("text-anchor", function(d) { return "middle"; })
+ .text(function(d) {
+ var usedCap = d.queueData.get("usedCapacity");
+ if (usedCap >= 100.0) {
+ return usedCap.toFixed(0) + "%";
+ } else {
+ return usedCap.toFixed(1) + "%";
+ }
+ })
+ .style("fill-opacity", 1e-6);
+
+ // append queue name
+ nodeEnter.append("text")
+ .attr("x", function(d) { return 40; })
+ .attr("dy", ".35em")
+ .attr("text-anchor", function(d) { return "start"; })
+ .text(function(d) { return d.name; })
+ .style("fill-opacity", 1e-6);
+
+ // Transition nodes to their new position.
+ var nodeUpdate = node.transition()
+ .duration(duration)
+ .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; });
+
+ nodeUpdate.select("circle")
+ .attr("r", 20)
+ .attr("href",
+ function(d) {
+ return "yarnQueues/" + d.queueData.get("name");
+ })
+ .style("stroke", function(d) {
+ if (d.queueData.get("name") == this.get("selected")) {
+ return "red";
+ } else {
+ return "gray";
+ }
+ }.bind(this));
+
+ nodeUpdate.selectAll("text")
+ .style("fill-opacity", 1);
+
+ // Transition exiting nodes to the parent's new position.
+ var nodeExit = node.exit().transition()
+ .duration(duration)
+ .attr("transform", function(d) { return "translate(" + source.y + "," + source.x + ")"; })
+ .remove();
+
+ nodeExit.select("circle")
+ .attr("r", 1e-6);
+
+ nodeExit.select("text")
+ .style("fill-opacity", 1e-6);
+
+ // Update the links\u2026
+ var link = this.mainSvg.selectAll("path.link")
+ .data(links, function(d) { return d.target.id; });
+
+ // Enter any new links at the parent's previous position.
+ link.enter().insert("path", "g")
+ .attr("class", "link")
+ .attr("d", function(d) {
+ var o = {x: source.x0, y: source.y0};
+ return diagonal({source: o, target: o});
+ });
+
+ // Transition links to their new position.
+ link.transition()
+ .duration(duration)
+ .attr("d", diagonal);
+
+ // Transition exiting nodes to the parent's new position.
+ link.exit().transition()
+ .duration(duration)
+ .attr("d", function(d) {
+ var o = {x: source.x, y: source.y};
+ return diagonal({source: o, target: o});
+ })
+ .remove();
+
+ // Stash the old positions for transition.
+ nodes.forEach(function(d) {
+ d.x0 = d.x;
+ d.y0 = d.y;
+ });
+ },
+
+ reDraw: function() {
+ this.initData();
+
+ var margin = {top: 20, right: 120, bottom: 20, left: 120};
+ var treeWidth = this.maxDepth * 200;
+ var treeHeight = this.numOfLeafQueue * 80;
+ var width = treeWidth + margin.left + margin.right;
+ var height = treeHeight + margin.top + margin.bottom;
+ var layout = { };
+
+ if (this.mainSvg) {
+ this.mainSvg.remove();
+ }
+
+ this.mainSvg = d3.select("#" + this.get("parentId")).append("svg")
+ .attr("width", width)
+ .attr("height", height)
+ .attr("class", "tree-selector")
+ .append("g")
+ .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
+
+ var tree = d3.layout.tree().size([treeHeight, treeWidth]);
+
+ var diagonal = d3.svg.diagonal()
+ .projection(function(d) { return [d.y, d.x]; });
+
+ var root = this.treeData;
+ root.x0 = height / 2;
+ root.y0 = 0;
+
+ d3.select(self.frameElement).style("height", height);
+
+ this.update(root, root, tree, diagonal);
+ },
+
+ didInsertElement: function() {
+ this.reDraw();
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/.gitkeep
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/cluster-overview.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/cluster-overview.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/cluster-overview.js
new file mode 100644
index 0000000..5c3c825
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/cluster-overview.js
@@ -0,0 +1,5 @@
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+ loading: true,
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-apps.js
new file mode 100644
index 0000000..55ff9aa
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-apps.js
@@ -0,0 +1,4 @@
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-queue.js
new file mode 100644
index 0000000..b16864e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/controllers/yarn-queue.js
@@ -0,0 +1,6 @@
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+ needReload: true,
+ selectedQueue: undefined,
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/helpers/.gitkeep
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/index.html
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/index.html b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/index.html
new file mode 100644
index 0000000..edc4f2e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/index.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <title>YarnUi</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ {{content-for 'head'}}
+
+ <link rel="stylesheet" href="assets/vendor.css">
+ <link rel="stylesheet" href="assets/yarn-ui.css">
+
+ {{content-for 'head-footer'}}
+ </head>
+ <body>
+ {{content-for 'body'}}
+
+ <script src="assets/vendor.js"></script>
+ <script src="assets/yarn-ui.js"></script>
+
+ {{content-for 'body-footer'}}
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/.gitkeep
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-info.js
new file mode 100644
index 0000000..b1f0a88
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-info.js
@@ -0,0 +1,13 @@
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ startedOn: DS.attr('string'),
+ state: DS.attr('string'),
+ haState: DS.attr('string'),
+ rmStateStoreName: DS.attr('string'),
+ resourceManagerVersion: DS.attr('string'),
+ resourceManagerBuildVersion: DS.attr('string'),
+ hadoopVersion: DS.attr('string'),
+ hadoopBuildVersion: DS.attr('string'),
+ hadoopVersionBuiltOn: DS.attr('string')
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-metric.js
new file mode 100644
index 0000000..2dd428c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/cluster-metric.js
@@ -0,0 +1,115 @@
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ appsSubmitted: DS.attr('number'),
+ appsCompleted: DS.attr('number'),
+ appsPending: DS.attr('number'),
+ appsRunning: DS.attr('number'),
+ appsFailed: DS.attr('number'),
+ appsKilled: DS.attr('number'),
+ reservedMB: DS.attr('number'),
+ availableMB: DS.attr('number'),
+ allocatedMB: DS.attr('number'),
+ reservedVirtualCores: DS.attr('number'),
+ availableVirtualCores: DS.attr('number'),
+ allocatedVirtualCores: DS.attr('number'),
+ containersAllocated: DS.attr('number'),
+ containersReserved: DS.attr('number'),
+ containersPending: DS.attr('number'),
+ totalMB: DS.attr('number'),
+ totalVirtualCores: DS.attr('number'),
+ totalNodes: DS.attr('number'),
+ lostNodes: DS.attr('number'),
+ unhealthyNodes: DS.attr('number'),
+ decommissionedNodes: DS.attr('number'),
+ rebootedNodes: DS.attr('number'),
+ activeNodes: DS.attr('number'),
+
+ getFinishedAppsDataForDonutChart: function() {
+ var arr = [];
+ arr.push({
+ label: "Completed",
+ value: this.get("appsCompleted")
+ });
+ arr.push({
+ label: "Killed",
+ value: this.get("appsKilled")
+ });
+ arr.push({
+ label: "Failed",
+ value: this.get("appsFailed")
+ });
+
+ return arr;
+ }.property("appsCompleted", "appsKilled", "appsFailed"),
+
+ getRunningAppsDataForDonutChart: function() {
+ var arr = [];
+
+ arr.push({
+ label: "Pending",
+ value: this.get("appsPending")
+ });
+ arr.push({
+ label: "Running",
+ value: this.get("appsRunning")
+ });
+
+ return arr;
+ }.property("appsPending", "appsRunning"),
+
+ getNodesDataForDonutChart: function() {
+ var arr = [];
+ arr.push({
+ label: "Active",
+ value: this.get("activeNodes")
+ });
+ arr.push({
+ label: "Unhealthy",
+ value: this.get("unhealthyNodes")
+ });
+ arr.push({
+ label: "Decomissioned",
+ value: this.get("decommissionedNodes")
+ });
+ return arr;
+ }.property("activeNodes", "unhealthyNodes", "decommissionedNodes"),
+
+ getMemoryDataForDonutChart: function() {
+ var type = "MB";
+ var arr = [];
+ arr.push({
+ label: "Allocated",
+ value: this.get("allocated" + type)
+ });
+ arr.push({
+ label: "Reserved",
+ value: this.get("reserved" + type)
+ });
+ arr.push({
+ label: "Available",
+ value: this.get("available" + type)
+ });
+
+ return arr;
+ }.property("allocatedMB", "reservedMB", "availableMB"),
+
+ getVCoreDataForDonutChart: function() {
+ var type = "VirtualCores";
+ var arr = [];
+ arr.push({
+ label: "Allocated",
+ value: this.get("allocated" + type)
+ });
+ arr.push({
+ label: "Reserved",
+ value: this.get("reserved" + type)
+ });
+ arr.push({
+ label: "Available",
+ value: this.get("available" + type)
+ });
+
+ return arr;
+ }.property("allocatedVirtualCores", "reservedVirtualCores", "availableVirtualCores"),
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app-attempt.js
new file mode 100644
index 0000000..fcb5134
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app-attempt.js
@@ -0,0 +1,44 @@
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.Model.extend({
+ startTime: DS.attr('string'),
+ finishedTime: DS.attr('string'),
+ containerId: DS.attr('string'),
+ nodeHttpAddress: DS.attr('string'),
+ nodeId: DS.attr('string'),
+ logsLink: DS.attr('string'),
+
+ startTs: function() {
+ return Converter.dateToTimeStamp(this.get("startTime"));
+ }.property("startTime"),
+
+ finishedTs: function() {
+ var ts = Converter.dateToTimeStamp(this.get("finishedTime"));
+ return ts;
+ }.property("finishedTime"),
+
+ shortAppAttemptId: function() {
+ return "attempt_" +
+ parseInt(Converter.containerIdToAttemptId(this.get("containerId")).split("_")[3]);
+ }.property("containerId"),
+
+ elapsedTime: function() {
+ var elapsedMs = this.get("finishedTs") - this.get("startTs");
+ if (elapsedMs <= 0) {
+ elapsedMs = Date.now() - this.get("startTs");
+ }
+
+ return Converter.msToElapsedTime(elapsedMs);
+ }.property(),
+
+ tooltipLabel: function() {
+ return "<p>Id:" + this.get("id") +
+ "</p><p>ElapsedTime:" +
+ String(this.get("elapsedTime")) + "</p>";
+ }.property(),
+
+ link: function() {
+ return "/yarnAppAttempt/" + this.get("id");
+ }.property(),
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
new file mode 100644
index 0000000..cb79be1
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-app.js
@@ -0,0 +1,65 @@
+import Converter from 'yarn-ui/utils/converter';
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ appName: DS.attr('string'),
+ user: DS.attr('string'),
+ queue: DS.attr('string'),
+ state: DS.attr('string'),
+ startTime: DS.attr('string'),
+ elapsedTime: DS.attr('string'),
+ finalStatus: DS.attr('string'),
+ finishedTime: DS.attr('finishedTime'),
+ progress: DS.attr('number'),
+ diagnostics: DS.attr('string'),
+ amContainerLogs: DS.attr('string'),
+ amHostHttpAddress: DS.attr('string'),
+ logAggregationStatus: DS.attr('string'),
+ unmanagedApplication: DS.attr('string'),
+ amNodeLabelExpression: DS.attr('string'),
+ applicationTags: DS.attr('string'),
+ priority: DS.attr('number'),
+ allocatedMB: DS.attr('number'),
+ allocatedVCores: DS.attr('number'),
+ runningContainers: DS.attr('number'),
+ memorySeconds: DS.attr('number'),
+ vcoreSeconds: DS.attr('number'),
+ preemptedResourceMB: DS.attr('number'),
+ preemptedResourceVCores: DS.attr('number'),
+ numNonAMContainerPreempted: DS.attr('number'),
+ numAMContainerPreempted: DS.attr('number'),
+
+ isFailed: function() {
+ return this.get('finalStatus') == "FAILED"
+ }.property("finalStatus"),
+
+ allocatedResource: function() {
+ return Converter.resourceToString(this.get("allocatedMB"), this.get("allocatedVCores"));
+ }.property("allocatedMB", "allocatedVCores"),
+
+ preemptedResource: function() {
+ return Converter.resourceToString(this.get("preemptedResourceMB"), this.get("preemptedResourceVCores"));
+ }.property("preemptedResourceMB", "preemptedResourceVCores"),
+
+ aggregatedResourceUsage: function() {
+ return Converter.resourceToString(this.get("memorySeconds"), this.get("vcoreSeconds")) + " (� Secs)";
+ }.property("memorySeconds", "vcoreSeconds"),
+
+ progressStyle: function() {
+ return "width: " + this.get("progress") + "%";
+ }.property("progress"),
+
+ finalStatusStyle: function() {
+ var style = "default";
+ var finalStatus = this.get("finalStatus");
+ if (finalStatus == "KILLED") {
+ style = "warning";
+ } else if (finalStatus == "FAILED") {
+ style = "danger";
+ } else {
+ style = "success";
+ }
+
+ return "label label-" + style;
+ }.property("finalStatus")
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container.js
new file mode 100644
index 0000000..f7977be
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-container.js
@@ -0,0 +1,39 @@
+import DS from 'ember-data';
+import Converter from 'yarn-ui/utils/converter';
+
+export default DS.Model.extend({
+ allocatedMB: DS.attr('number'),
+ allocatedVCores: DS.attr('number'),
+ assignedNodeId: DS.attr('string'),
+ priority: DS.attr('number'),
+ startedTime: DS.attr('number'),
+ finishedTime: DS.attr('number'),
+ logUrl: DS.attr('string'),
+ containerExitStatus: DS.attr('number'),
+ containerState: DS.attr('string'),
+ nodeHttpAddress: DS.attr('string'),
+
+ startTs: function() {
+ return Converter.dateToTimeStamp(this.get("startedTime"));
+ }.property("startedTime"),
+
+ finishedTs: function() {
+ var ts = Converter.dateToTimeStamp(this.get("finishedTime"));
+ return ts;
+ }.property("finishedTime"),
+
+ elapsedTime: function() {
+ var elapsedMs = this.get("finishedTs") - this.get("startTs");
+ if (elapsedMs <= 0) {
+ elapsedMs = Date.now() - this.get("startTs");
+ }
+
+ return Converter.msToElapsedTime(elapsedMs);
+ }.property(),
+
+ tooltipLabel: function() {
+ return "<p>Id:" + this.get("id") +
+ "</p><p>ElapsedTime:" +
+ String(this.get("elapsedTime")) + "</p>";
+ }.property(),
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-queue.js
new file mode 100644
index 0000000..5b91d70
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-queue.js
@@ -0,0 +1,76 @@
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ name: DS.attr('string'),
+ children: DS.attr('array'),
+ parent: DS.attr('string'),
+ capacity: DS.attr('number'),
+ maxCapacity: DS.attr('number'),
+ usedCapacity: DS.attr('number'),
+ absCapacity: DS.attr('number'),
+ absMaxCapacity: DS.attr('number'),
+ absUsedCapacity: DS.attr('number'),
+ state: DS.attr('string'),
+ userLimit: DS.attr('number'),
+ userLimitFactor: DS.attr('number'),
+ preemptionDisabled: DS.attr('number'),
+ numPendingApplications: DS.attr('number'),
+ numActiveApplications: DS.attr('number'),
+ users: DS.hasMany('YarnUser'),
+
+ isLeafQueue: function() {
+ var len = this.get("children.length");
+ if (!len) {
+ return true;
+ }
+ return len <= 0;
+ }.property("children"),
+
+ capacitiesBarChartData: function() {
+ return [
+ {
+ label: "Absolute Capacity",
+ value: this.get("name") == "root" ? 100 : this.get("absCapacity")
+ },
+ {
+ label: "Absolute Used",
+ value: this.get("name") == "root" ? this.get("usedCapacity") : this.get("absUsedCapacity")
+ },
+ {
+ label: "Absolute Max Capacity",
+ value: this.get("name") == "root" ? 100 : this.get("absMaxCapacity")
+ }
+ ]
+ }.property("absCapacity", "absUsedCapacity", "absMaxCapacity"),
+
+ userUsagesDonutChartData: function() {
+ var data = [];
+ if (this.get("users")) {
+ this.get("users").forEach(function(o) {
+ data.push({
+ label: o.get("name"),
+ value: o.get("usedMemoryMB")
+ })
+ });
+ }
+
+ return data;
+ }.property("users"),
+
+ hasUserUsages: function() {
+ return this.get("userUsagesDonutChartData").length > 0;
+ }.property(),
+
+ numOfApplicationsDonutChartData: function() {
+ return [
+ {
+ label: "Pending Apps",
+ value: this.get("numPendingApplications") || 0 // TODO, fix the REST API so root will return #applications as well.
+ },
+ {
+ label: "Active Apps",
+ value: this.get("numActiveApplications") || 0
+ }
+ ]
+ }.property(),
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-user.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-user.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-user.js
new file mode 100644
index 0000000..6e9c03c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/models/yarn-user.js
@@ -0,0 +1,8 @@
+import DS from 'ember-data';
+
+export default DS.Model.extend({
+ name: DS.attr('string'),
+ queueName: DS.attr('string'),
+ usedMemoryMB: DS.attr('number'),
+ usedVCore: DS.attr('number')
+})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
new file mode 100644
index 0000000..c31190f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/router.js
@@ -0,0 +1,16 @@
+import Ember from 'ember';
+import config from './config/environment';
+
+var Router = Ember.Router.extend({
+ location: config.locationType
+});
+
+Router.map(function() {
+ this.route('yarnApps');
+ this.route('yarnQueue', { path: '/yarnQueue/:queue_name' });
+ this.route('clusterOverview');
+ this.route('yarnApp', { path: '/yarnApp/:app_id' });
+ this.route('yarnAppAttempt', { path: '/yarnAppAttempt/:app_attempt_id'});
+});
+
+export default Router;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/.gitkeep
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/.gitkeep b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/.gitkeep
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/cluster-overview.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/cluster-overview.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/cluster-overview.js
new file mode 100644
index 0000000..4ba5dcd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/cluster-overview.js
@@ -0,0 +1,11 @@
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model() {
+ return this.store.findAll('ClusterMetric');
+ },
+
+ afterModel() {
+ this.controllerFor("ClusterOverview").set("loading", false);
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app-attempt.js
new file mode 100644
index 0000000..3b6adc7
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app-attempt.js
@@ -0,0 +1,21 @@
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ attempt: this.store.findRecord('yarnAppAttempt', param.app_attempt_id),
+
+ rmContainers: this.store.query('yarnContainer',
+ {
+ app_attempt_id: param.app_attempt_id,
+ is_rm: true
+ }),
+
+ tsContainers: this.store.query('yarnContainer',
+ {
+ app_attempt_id: param.app_attempt_id,
+ is_rm: false
+ }),
+ });
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app.js
new file mode 100644
index 0000000..03092aa
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-app.js
@@ -0,0 +1,10 @@
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ app: this.store.find('yarnApp', param.app_id),
+ attempts: this.store.query('yarnAppAttempt', { appId: param.app_id})
+ });
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
new file mode 100644
index 0000000..79d184f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-apps.js
@@ -0,0 +1,8 @@
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model() {
+ var apps = this.store.findAll('yarnApp');
+ return apps
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queue.js
new file mode 100644
index 0000000..9396bac
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queue.js
@@ -0,0 +1,20 @@
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ selected : param.queue_name,
+ queues: this.store.findAll('yarnQueue'),
+ selectedQueue : undefined,
+ apps: undefined, // apps of selected queue
+ });
+ },
+
+ afterModel(model) {
+ model.selectedQueue = this.store.peekRecord('yarnQueue', model.selected);
+ model.apps = this.store.findAll('yarnApp');
+ model.apps.forEach(function(o) {
+ console.log(o);
+ })
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/index.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/index.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/index.js
new file mode 100644
index 0000000..9be90b1
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/index.js
@@ -0,0 +1,5 @@
+export default Ember.Route.extend({
+ beforeModel() {
+ this.transitionTo('yarnQueues.root');
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/queues-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/queues-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/queues-selector.js
new file mode 100644
index 0000000..0f6c572
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/routes/yarn-queues/queues-selector.js
@@ -0,0 +1,7 @@
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model() {
+ return this.store.findAll('yarnQueue');
+ },
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7dca449f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-info.js
new file mode 100644
index 0000000..cc936cb
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/app/serializers/cluster-info.js
@@ -0,0 +1,29 @@
+import DS from 'ember-data';
+
+export default DS.JSONAPISerializer.extend({
+ normalizeSingleResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ var fixedPayload = {
+ id: id,
+ type: primaryModelClass.modelName,
+ attributes: payload
+ };
+
+ return this._super(store, primaryModelClass, fixedPayload, id,
+ requestType);
+ },
+
+ normalizeArrayResponse(store, primaryModelClass, payload, id,
+ requestType) {
+ // return expected is { data: [ {}, {} ] }
+ var normalizedArrayResponse = {};
+
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = [
+ this.normalizeSingleResponse(store, primaryModelClass,
+ payload.clusterInfo, payload.clusterInfo.id, requestType)
+ ];
+ return normalizedArrayResponse;
+ }
+});
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[33/50] [abbrv] hadoop git commit: YARN-5509. Build error due to
preparing 3.0.0-alpha2 deployment. (Kai Sasaki via wangda)
Posted by su...@apache.org.
YARN-5509. Build error due to preparing 3.0.0-alpha2 deployment. (Kai Sasaki via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e7b55f2f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e7b55f2f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e7b55f2f
Branch: refs/heads/YARN-3368
Commit: e7b55f2f651c86379ffe4fd9a55c411150bc1e4f
Parents: 2a0bf14
Author: Wangda Tan <wa...@apache.org>
Authored: Thu Aug 11 14:59:14 2016 -0700
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e7b55f2f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
index 6d46fda..2933a76 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
@@ -20,12 +20,12 @@
<parent>
<artifactId>hadoop-yarn</artifactId>
<groupId>org.apache.hadoop</groupId>
- <version>3.0.0-alpha1-SNAPSHOT</version>
+ <version>3.0.0-alpha2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-ui</artifactId>
- <version>3.0.0-alpha1-SNAPSHOT</version>
+ <version>3.0.0-alpha2-SNAPSHOT</version>
<name>Apache Hadoop YARN UI</name>
<packaging>${packaging.type}</packaging>
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[48/50] [abbrv] hadoop git commit: YARN-5698. [YARN-3368] Launch new
YARN UI under hadoop web app port. (Sunil G via wangda)
Posted by su...@apache.org.
YARN-5698. [YARN-3368] Launch new YARN UI under hadoop web app port. (Sunil G via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a99d8853
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a99d8853
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a99d8853
Branch: refs/heads/YARN-3368
Commit: a99d8853ba49573318a56c286ad26a7e97f34208
Parents: 8d857d6
Author: Wangda Tan <wa...@apache.org>
Authored: Wed Oct 12 13:22:20 2016 -0700
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../hadoop/yarn/conf/YarnConfiguration.java | 21 ++----
.../org/apache/hadoop/yarn/webapp/WebApps.java | 8 +++
.../src/main/resources/yarn-default.xml | 20 ++----
.../server/resourcemanager/ResourceManager.java | 68 +++++++++++---------
.../src/main/webapp/config/default-config.js | 4 +-
5 files changed, 55 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a99d8853/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
index 0134465..c16e1ea 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
@@ -266,25 +266,12 @@ public class YarnConfiguration extends Configuration {
/**
* Enable YARN WebApp V2.
*/
- public static final String RM_WEBAPP_UI2_ENABLE = RM_PREFIX
+ public static final String YARN_WEBAPP_UI2_ENABLE = "yarn."
+ "webapp.ui2.enable";
- public static final boolean DEFAULT_RM_WEBAPP_UI2_ENABLE = false;
+ public static final boolean DEFAULT_YARN_WEBAPP_UI2_ENABLE = false;
- /** The address of the RM web ui2 application. */
- public static final String RM_WEBAPP_UI2_ADDRESS = RM_PREFIX
- + "webapp.ui2.address";
-
- public static final int DEFAULT_RM_WEBAPP_UI2_PORT = 8288;
- public static final String DEFAULT_RM_WEBAPP_UI2_ADDRESS = "0.0.0.0:" +
- DEFAULT_RM_WEBAPP_UI2_PORT;
-
- /** The https address of the RM web ui2 application.*/
- public static final String RM_WEBAPP_UI2_HTTPS_ADDRESS =
- RM_PREFIX + "webapp.ui2.https.address";
-
- public static final int DEFAULT_RM_WEBAPP_UI2_HTTPS_PORT = 8290;
- public static final String DEFAULT_RM_WEBAPP_UI2_HTTPS_ADDRESS = "0.0.0.0:"
- + DEFAULT_RM_WEBAPP_UI2_HTTPS_PORT;
+ public static final String YARN_WEBAPP_UI2_WARFILE_PATH = "yarn."
+ + "webapp.ui2.war-file-path";
public static final String RM_RESOURCE_TRACKER_ADDRESS =
RM_PREFIX + "resource-tracker.address";
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a99d8853/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java
index 53cb3ee..d3b37d9 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java
@@ -43,6 +43,7 @@ import org.apache.hadoop.security.http.RestCsrfPreventionFilter;
import org.apache.hadoop.security.http.XFrameOptionsFilter;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.webapp.util.WebAppUtils;
+import org.mortbay.jetty.webapp.WebAppContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -369,8 +370,15 @@ public class WebApps {
}
public WebApp start(WebApp webapp) {
+ return start(webapp, null);
+ }
+
+ public WebApp start(WebApp webapp, WebAppContext ui2Context) {
WebApp webApp = build(webapp);
HttpServer2 httpServer = webApp.httpServer();
+ if (ui2Context != null) {
+ httpServer.addContext(ui2Context, true);
+ }
try {
httpServer.start();
LOG.info("Web app " + name + " started at "
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a99d8853/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
index 114b9ed..48287a4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
@@ -181,28 +181,16 @@
<property>
<description>To enable RM web ui2 application.</description>
- <name>yarn.resourcemanager.webapp.ui2.enable</name>
+ <name>yarn.webapp.ui2.enable</name>
<value>false</value>
</property>
<property>
<description>
- The http address of the RM web ui2 application.
- If only a host is provided as the value,
- the webapp will be served on a random port.
- </description>
- <name>yarn.resourcemanager.webapp.ui2.address</name>
- <value>${yarn.resourcemanager.hostname}:8288</value>
- </property>
-
- <property>
- <description>
- The https address of the RM web ui2 application.
- If only a host is provided as the value,
- the webapp will be served on a random port.
+ Explicitly provide WAR file path for ui2 if needed.
</description>
- <name>yarn.resourcemanager.webapp.ui2.https.address</name>
- <value>${yarn.resourcemanager.hostname}:8290</value>
+ <name>yarn.webapp.ui2.war-file-path</name>
+ <value></value>
</property>
<property>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a99d8853/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
index f739e31..4c0a3bb 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
@@ -49,6 +49,7 @@ import org.apache.hadoop.util.JvmPauseMonitor;
import org.apache.hadoop.util.ReflectionUtils;
import org.apache.hadoop.util.ShutdownHookManager;
import org.apache.hadoop.util.StringUtils;
+import org.apache.hadoop.util.VersionInfo;
import org.apache.hadoop.util.ZKUtil;
import org.apache.hadoop.yarn.YarnUncaughtExceptionHandler;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
@@ -114,6 +115,7 @@ import org.apache.hadoop.yarn.webapp.WebApps;
import org.apache.hadoop.yarn.webapp.WebApps.Builder;
import org.apache.hadoop.yarn.webapp.util.WebAppUtils;
import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;
+import org.mortbay.jetty.webapp.WebAppContext;
import com.google.common.annotations.VisibleForTesting;
import java.io.IOException;
@@ -121,6 +123,8 @@ import java.io.InputStream;
import java.io.PrintStream;
import java.net.InetSocketAddress;
import java.net.URI;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.nio.charset.Charset;
import java.security.PrivilegedExceptionAction;
import java.security.SecureRandom;
@@ -148,6 +152,11 @@ public class ResourceManager extends CompositeService implements Recoverable {
private static final Log LOG = LogFactory.getLog(ResourceManager.class);
private static long clusterTimeStamp = System.currentTimeMillis();
+ /*
+ * UI2 webapp name
+ */
+ public static final String UI2_WEBAPP_NAME = "/ui2";
+
/**
* "Always On" services. Services that need to run always irrespective of
* the HA state of the RM.
@@ -940,26 +949,6 @@ public class ResourceManager extends CompositeService implements Recoverable {
return builder;
}
- protected void startWebAppV2() throws IOException {
- Configuration config = getConfig();
- final InetSocketAddress httpAddr = config.getSocketAddr(
- YarnConfiguration.RM_WEBAPP_UI2_ADDRESS,
- YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_ADDRESS,
- YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_PORT);
- final InetSocketAddress httpsAddr = config.getSocketAddr(
- YarnConfiguration.RM_WEBAPP_UI2_HTTPS_ADDRESS,
- YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_HTTPS_ADDRESS,
- YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_HTTPS_PORT);
-
- HttpServer2.Builder builder = httpServerTemplateForRM(config, httpAddr,
- httpsAddr, "rm");
-
- HttpServer2 infoServer = builder.build();
- infoServer.start();
-
- LOG.info("Web server init done");
- }
-
protected void startWepApp() {
// Use the customized yarn filter instead of the standard kerberos filter to
@@ -1074,9 +1063,36 @@ public class ResourceManager extends CompositeService implements Recoverable {
builder.withAttribute(WebAppProxy.FETCHER_ATTRIBUTE, fetcher);
String[] proxyParts = proxyHostAndPort.split(":");
builder.withAttribute(WebAppProxy.PROXY_HOST_ATTRIBUTE, proxyParts[0]);
+ }
+
+ WebAppContext uiWebAppContext = null;
+ if (getConfig().getBoolean(YarnConfiguration.YARN_WEBAPP_UI2_ENABLE,
+ YarnConfiguration.DEFAULT_YARN_WEBAPP_UI2_ENABLE)) {
+ String webPath = UI2_WEBAPP_NAME;
+ String onDiskPath = getConfig()
+ .get(YarnConfiguration.YARN_WEBAPP_UI2_WARFILE_PATH);
+ if (null == onDiskPath) {
+ String war = "hadoop-yarn-ui-" + VersionInfo.getVersion() + ".war";
+ URLClassLoader cl = (URLClassLoader) ClassLoader.getSystemClassLoader();
+ URL url = cl.findResource(war);
+
+ if (null == url) {
+ onDiskPath = "";
+ } else {
+ onDiskPath = url.getFile();
+ }
+
+ LOG.info(
+ "New web UI war file name:" + war + ", and path:" + onDiskPath);
+ }
+
+ uiWebAppContext = new WebAppContext();
+ uiWebAppContext.setContextPath(webPath);
+ uiWebAppContext.setWar(onDiskPath);
}
- webApp = builder.start(new RMWebApp(this));
+
+ webApp = builder.start(new RMWebApp(this), uiWebAppContext);
}
/**
@@ -1178,16 +1194,6 @@ public class ResourceManager extends CompositeService implements Recoverable {
transitionToActive();
}
- if (getConfig().getBoolean(YarnConfiguration.RM_WEBAPP_UI2_ENABLE,
- YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_ENABLE)) {
- try {
- startWebAppV2();
- LOG.info("Yarn WebApp UI 2 is started");
- } catch (Exception e) {
- LOG.error("Failed to start Yarn web app v2:" + e.getMessage());
- }
- }
-
startWepApp();
if (getConfig().getBoolean(YarnConfiguration.IS_MINI_YARN_CLUSTER,
false)) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a99d8853/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
index 92d0721..c5dbbea 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
@@ -18,7 +18,7 @@
module.exports = { // Yarn UI App configurations
hosts: {
- localBaseAddress: "localhost:1337",
+ localBaseAddress: "",
timelineWebAddress: "localhost:8188",
rmWebAddress: "localhost:8088",
protocolScheme: "http:"
@@ -29,4 +29,4 @@ module.exports = { // Yarn UI App configurations
metrics: 'ws/v1/cluster/metrics',
node: 'ws/v1/node'
},
-};
\ No newline at end of file
+};
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[02/50] [abbrv] hadoop git commit: HADOOP-13763. KMS REST API
Documentation Decrypt URL typo. Contributed by Jeffrey E Rodriguez.
Posted by su...@apache.org.
HADOOP-13763. KMS REST API Documentation Decrypt URL typo. Contributed by Jeffrey E Rodriguez.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b62bc2bb
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b62bc2bb
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b62bc2bb
Branch: refs/heads/YARN-3368
Commit: b62bc2bbd80bb751348f0c1f655d5e456624663e
Parents: 4df8ed6
Author: Xiao Chen <xi...@apache.org>
Authored: Thu Oct 27 18:05:40 2016 -0700
Committer: Xiao Chen <xi...@apache.org>
Committed: Thu Oct 27 18:05:40 2016 -0700
----------------------------------------------------------------------
hadoop-common-project/hadoop-kms/src/site/markdown/index.md.vm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b62bc2bb/hadoop-common-project/hadoop-kms/src/site/markdown/index.md.vm
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-kms/src/site/markdown/index.md.vm b/hadoop-common-project/hadoop-kms/src/site/markdown/index.md.vm
index 0c6d0b2..69eb1dd 100644
--- a/hadoop-common-project/hadoop-kms/src/site/markdown/index.md.vm
+++ b/hadoop-common-project/hadoop-kms/src/site/markdown/index.md.vm
@@ -896,7 +896,7 @@ $H4 Decrypt Encrypted Key
*REQUEST:*
- POST http://HOST:PORT/kms/v1/keyversion/<version-name>/_eek?ee_op=decrypt
+ POST http://HOST:PORT/kms/v1/keyversion/<version-name>/_eek?eek_op=decrypt
Content-Type: application/json
{
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[47/50] [abbrv] hadoop git commit: YARN-5785. [YARN-3368] Accessing
applications and containers list from Node page is throwing few exceptions in
console. (Akhil P B and Sreenath Somarajapuram via Sunil G)
Posted by su...@apache.org.
YARN-5785. [YARN-3368] Accessing applications and containers list from Node page is throwing few exceptions in console. (Akhil P B and Sreenath Somarajapuram via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/97143e96
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/97143e96
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/97143e96
Branch: refs/heads/YARN-3368
Commit: 97143e966eb87e946d51723d13601e32d9d632ff
Parents: 871c013
Author: sunilg <su...@apache.org>
Authored: Fri Oct 28 19:56:18 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../src/main/webapp/app/adapters/yarn-node-app.js | 12 ++----------
.../src/main/webapp/app/adapters/yarn-node-container.js | 12 ++----------
.../src/main/webapp/app/adapters/yarn-node.js | 5 +----
.../src/main/webapp/app/serializers/yarn-node-app.js | 2 +-
.../main/webapp/app/serializers/yarn-node-container.js | 2 +-
.../src/main/webapp/config/default-config.js | 2 +-
6 files changed, 8 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/97143e96/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
index eaddfcb..6d69828 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
@@ -25,22 +25,14 @@ export default AbstractAdapter.extend({
serverName: "NM",
urlForQuery(query) {
- var extension = this.get("host").split('/').pop();
- if (extension != query.nodeAddr) {
- this.host = this.get("host") + query.nodeAddr;
- }
var url = this._buildURL();
- url = url + "/apps";
+ url = url.replace("{nodeAddress}", query.nodeAddr) + "/apps";
return url;
},
urlForQueryRecord: function (query) {
- var extension = this.get("host").split('/').pop();
- if (extension != query.nodeAddr) {
- this.host = this.get("host") + query.nodeAddr;
- }
var url = this._buildURL();
- url = url + "/apps/" + query.appId;
+ url = url.replace("{nodeAddress}", query.nodeAddr) + "/apps/" + query.appId;
return url;
},
http://git-wip-us.apache.org/repos/asf/hadoop/blob/97143e96/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
index 56c4bcd..0fff047 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
@@ -25,22 +25,14 @@ export default AbstractAdapter.extend({
serverName: "NM",
urlForQuery(query) {
- var extension = this.get("host").split('/').pop();
- if (extension != query.nodeHttpAddr) {
- this.host = this.get("host") + query.nodeHttpAddr;
- }
var url = this._buildURL();
- url = url + "/containers";
+ url = url.replace("{nodeAddress}", query.nodeHttpAddr) + "/containers";
return url;
},
urlForQueryRecord(query) {
- var extension = this.get("host").split('/').pop();
- if (extension != query.nodeHttpAddr) {
- this.host = this.get("host") + query.nodeHttpAddr;
- }
var url = this._buildURL();
- url = url + "/containers/" + query.containerId;
+ url = url.replace("{nodeAddress}", query.nodeHttpAddr) + "/containers/" + query.containerId;
return url;
},
http://git-wip-us.apache.org/repos/asf/hadoop/blob/97143e96/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
index 7a0fc4a..5bcfc9a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
@@ -25,11 +25,8 @@ export default AbstractAdapter.extend({
serverName: "NM",
urlForFindRecord(id, modelName, snapshot) {
- var extension = this.get("host").split('/').pop();
- if (extension != id) {
- this.host = this.get("host") + id;
- }
var url = this._buildURL();
+ url = url.replace("{nodeAddress}", id);
return url;
},
http://git-wip-us.apache.org/repos/asf/hadoop/blob/97143e96/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
index 5945813..3dfd776 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
@@ -68,7 +68,7 @@ export default DS.JSONAPISerializer.extend({
// expected return response is of the form { data: [ {}, {} ] }
var normalizedArrayResponse = {};
// payload is of the form { "apps" : { "app": [ {},{},{} ] } }
- if (payload.apps) {
+ if (payload.apps && payload.apps.app) {
normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
return this.internalNormalizeSingleResponse(store, primaryModelClass,
singleApp);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/97143e96/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
index a104f1e..bf19ad7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
@@ -54,7 +54,7 @@ export default DS.JSONAPISerializer.extend({
requestType) {
// expected return response is of the form { data: [ {}, {} ] }
var normalizedArrayResponse = {};
- if (payload.containers) {
+ if (payload.containers && payload.containers.container) {
// payload is of the form { "containers" : { "container": [ {},{},{} ] } }
normalizedArrayResponse.data =
payload.containers.container.map(singleContainer => {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/97143e96/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
index c5dbbea..70d4ebc 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
@@ -27,6 +27,6 @@ module.exports = { // Yarn UI App configurations
timeline: 'ws/v1/applicationhistory',
cluster: 'ws/v1/cluster',
metrics: 'ws/v1/cluster/metrics',
- node: 'ws/v1/node'
+ node: '{nodeAddress}/ws/v1/node'
},
};
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[26/50] [abbrv] hadoop git commit: YARN-4514. [YARN-3368] Cleanup
hardcoded configurations, such as RM/ATS addresses. (Sunil G via wangda)
Posted by su...@apache.org.
YARN-4514. [YARN-3368] Cleanup hardcoded configurations, such as RM/ATS addresses. (Sunil G via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/47d31011
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/47d31011
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/47d31011
Branch: refs/heads/YARN-3368
Commit: 47d310112bfbf21d8ecbfab779b86f0b7e2e715b
Parents: 8c83bf4
Author: Wangda Tan <wa...@apache.org>
Authored: Sat Apr 16 23:04:45 2016 -0700
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../src/main/webapp/app/adapters/abstract.js | 48 +++++++++++++
.../main/webapp/app/adapters/cluster-info.js | 22 ++----
.../main/webapp/app/adapters/cluster-metric.js | 22 ++----
.../webapp/app/adapters/yarn-app-attempt.js | 24 ++-----
.../src/main/webapp/app/adapters/yarn-app.js | 27 ++-----
.../webapp/app/adapters/yarn-container-log.js | 10 ++-
.../main/webapp/app/adapters/yarn-container.js | 20 +++---
.../main/webapp/app/adapters/yarn-node-app.js | 24 +++----
.../webapp/app/adapters/yarn-node-container.js | 24 +++----
.../src/main/webapp/app/adapters/yarn-node.js | 23 +++---
.../src/main/webapp/app/adapters/yarn-queue.js | 22 ++----
.../main/webapp/app/adapters/yarn-rm-node.js | 21 ++----
.../hadoop-yarn-ui/src/main/webapp/app/app.js | 4 +-
.../src/main/webapp/app/config.js | 5 +-
.../src/main/webapp/app/index.html | 1 +
.../src/main/webapp/app/initializers/env.js | 29 ++++++++
.../src/main/webapp/app/initializers/hosts.js | 28 ++++++++
.../src/main/webapp/app/services/env.js | 59 ++++++++++++++++
.../src/main/webapp/app/services/hosts.js | 74 ++++++++++++++++++++
.../hadoop-yarn-ui/src/main/webapp/bower.json | 25 +++----
.../src/main/webapp/config/configs.env | 48 +++++++++++++
.../src/main/webapp/config/default-config.js | 32 +++++++++
.../src/main/webapp/config/environment.js | 11 ++-
.../src/main/webapp/ember-cli-build.js | 10 ++-
.../hadoop-yarn-ui/src/main/webapp/package.json | 35 ++++-----
.../webapp/tests/unit/initializers/env-test.js | 41 +++++++++++
.../tests/unit/initializers/hosts-test.js | 41 +++++++++++
.../tests/unit/initializers/jquery-test.js | 41 +++++++++++
.../main/webapp/tests/unit/services/env-test.js | 30 ++++++++
.../webapp/tests/unit/services/hosts-test.js | 30 ++++++++
30 files changed, 637 insertions(+), 194 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/abstract.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/abstract.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/abstract.js
new file mode 100644
index 0000000..c7e5c36
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/abstract.js
@@ -0,0 +1,48 @@
+/**
+ * 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.
+ */
+import Ember from 'ember';
+
+export default DS.JSONAPIAdapter.extend({
+ address: null, //Must be set by inheriting classes
+ restNameSpace: null, //Must be set by inheriting classes
+ serverName: null, //Must be set by inheriting classes
+
+ headers: {
+ Accept: 'application/json'
+ },
+
+ host: Ember.computed("address", function () {
+ var address = this.get("address");
+ return this.get(`hosts.${address}`);
+ }),
+
+ namespace: Ember.computed("restNameSpace", function () {
+ var serverName = this.get("restNameSpace");
+ return this.get(`env.app.namespaces.${serverName}`);
+ }),
+
+ ajax: function(url, method, options) {
+ options = options || {};
+ options.crossDomain = true;
+ options.xhrFields = {
+ withCredentials: true
+ };
+ options.targetServer = this.get('serverName');
+ return this._super(url, method, options);
+ }
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-info.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-info.js
index 7dcbe61..f79df92 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-info.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-info.js
@@ -16,23 +16,15 @@
* limitations under the License.
*/
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
+import AbstractAdapter from './abstract';
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster', // common const
+export default AbstractAdapter.extend({
+ address: "rmWebAddress",
+ restNameSpace: "cluster",
+ serverName: "RM",
+
+ // Any cluster-info specific adapter changes must be added here
pathForType(modelName) {
return ''; // move to some common place, return path by modelname.
},
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-metric.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-metric.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-metric.js
index ad5ae0e..8325a4c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-metric.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/cluster-metric.js
@@ -16,23 +16,15 @@
* limitations under the License.
*/
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
+import AbstractAdapter from './abstract';
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster/metrics', // common const
+export default AbstractAdapter.extend({
+ address: "rmWebAddress",
+ restNameSpace: "metrics",
+ serverName: "RM",
+
+ // Any cluster-metric specific adapter changes must be added here
pathForType(modelName) {
return ''; // move to some common place, return path by modelname.
},
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
index 7b233bc..d10ba45 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
@@ -16,16 +16,13 @@
* limitations under the License.
*/
-import DS from 'ember-data';
+import AbstractAdapter from './abstract';
import Converter from 'yarn-ui/utils/converter';
-import Config from 'yarn-ui/config';
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster', // common const
+export default AbstractAdapter.extend({
+ address: "rmWebAddress",
+ restNameSpace: "cluster",
+ serverName: "RM",
urlForQuery(query, modelName) {
var url = this._buildURL();
@@ -36,15 +33,8 @@ export default DS.JSONAPIAdapter.extend({
var url = this._buildURL();
var url = url + '/apps/' +
Converter.attemptIdToAppId(id) + "/appattempts/" + id;
- console.log(url);
+ console.log('app-attempt url:',url);
return url;
- },
-
- ajax(url, method, hash) {
- hash = {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
}
+
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
index 5cd888c..afd93f4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app.js
@@ -16,29 +16,14 @@
* limitations under the License.
*/
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
+import AbstractAdapter from './abstract';
+
+export default AbstractAdapter.extend({
+ address: "rmWebAddress",
+ restNameSpace: "cluster",
+ serverName: "RM",
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster', // common const
pathForType(modelName) {
return 'apps'; // move to some common place, return path by modelname.
},
- /*
- urlForQuery(query, modelName) {
- var url = this._buildURL();
- return url + '/apps/' + query.appId + "/appattempts";
- },
- */
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
index 7838c98..39c3c87 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
@@ -28,8 +28,14 @@ export default DS.RESTAdapter.extend({
headers: {
Accept: 'text/plain'
},
- host: 'http://localhost:1337/',
- namespace: 'ws/v1/node',
+
+ host: Ember.computed("address", function () {
+ return this.get(`hosts.localBaseAddress`);
+ }),
+
+ namespace: Ember.computed("restNameSpace", function () {
+ return this.get(`env.app.namespaces.node`);
+ }),
urlForFindRecord(id, modelName, snapshot) {
var splits = Converter.splitForContainerLogs(id);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container.js
index 67a37f7..fd6a6f8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container.js
@@ -18,30 +18,32 @@
import DS from 'ember-data';
import Converter from 'yarn-ui/utils/converter';
-import Config from 'yarn-ui/config';
export default DS.JSONAPIAdapter.extend({
headers: {
Accept: 'application/json'
},
- rmHost: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT,
- tsHost: 'http://localhost:1337/' + Config.TS_HOST + ':' + Config.TS_PORT,
+
host: function() {
return undefined
}.property(),
- rmNamespace: 'ws/v1/cluster',
- tsNamespace: 'ws/v1/applicationhistory',
+
namespace: function() {
return undefined
}.property(),
urlForQuery(query, modelName) {
+ var rmHosts = this.get(`hosts.rmWebAddress`);
+ var tsHosts = this.get(`hosts.timelineWebAddress`);
+ var rmNamespaces = this.get(`env.app.namespaces.cluster`);
+ var tsNamespaces = this.get(`env.app.namespaces.timeline`);
+
if (query.is_rm) {
- this.set("host", this.rmHost);
- this.set("namespace", this.rmNamespace);
+ this.set("host", rmHosts);
+ this.set("namespace", rmNamespaces);
} else {
- this.set("host", this.tsHost);
- this.set("namespace", this.tsNamespace);
+ this.set("host", tsHosts);
+ this.set("namespace", tsNamespaces);
}
var url = this._buildURL();
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
index 0c60d1f..fd6c021 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
@@ -16,24 +16,23 @@
* limitations under the License.
*/
-import DS from 'ember-data';
+import AbstractAdapter from './abstract';
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/',
- namespace: 'ws/v1/node',
+export default AbstractAdapter.extend({
+
+ address: "localBaseAddress",
+ restNameSpace: "node",
+ serverName: "NM",
urlForQuery(query) {
- this.host = this.host + query.nodeAddr;
+ this.host = this.get("host") + query.nodeAddr;
var url = this._buildURL();
url = url + "/apps";
return url;
},
urlForQueryRecord: function (query) {
- this.host = this.host + query.nodeAddr;
+ this.host = this.get("host") + query.nodeAddr;
var url = this._buildURL();
url = url + "/apps/" + query.appId;
return url;
@@ -53,11 +52,4 @@ export default DS.JSONAPIAdapter.extend({
return this.ajax(url, 'GET', { data: query });
},
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "NM";
- return this._super(url, method, hash);
- }
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
index e8bf7b7..caf1e3f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
@@ -16,24 +16,23 @@
* limitations under the License.
*/
-import DS from 'ember-data';
+import AbstractAdapter from './abstract';
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/',
- namespace: 'ws/v1/node',
+export default AbstractAdapter.extend({
+
+ address: "localBaseAddress",
+ restNameSpace: "node",
+ serverName: "NM",
urlForQuery(query) {
- this.host = this.host + query.nodeHttpAddr;
+ this.host = this.get("host") + query.nodeHttpAddr;
var url = this._buildURL();
url = url + "/containers";
return url;
},
urlForQueryRecord(query) {
- this.host = this.host + query.nodeHttpAddr;
+ this.host = this.get("host") + query.nodeHttpAddr;
var url = this._buildURL();
url = url + "/containers/" + query.containerId;
return url;
@@ -54,11 +53,4 @@ export default DS.JSONAPIAdapter.extend({
return this.ajax(url, 'GET', { data: query });
},
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "NM";
- return this._super(url, method, hash);
- }
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
index 64f524a..c9f36c3 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
@@ -16,25 +16,18 @@
* limitations under the License.
*/
-import DS from 'ember-data';
+import AbstractAdapter from './abstract';
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/',
- namespace: 'ws/v1/node',
+export default AbstractAdapter.extend({
+
+ address: "localBaseAddress",
+ restNameSpace: "node",
+ serverName: "NM",
urlForFindRecord(id, modelName, snapshot) {
- this.host = this.host + id;
+ this.host = this.get("host") + id;
var url = this._buildURL();
return url;
},
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "NM";
- return this._super(url, method, hash);
- }
+
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-queue.js
index ebe7b39..41cd442 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-queue.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-queue.js
@@ -16,23 +16,15 @@
* limitations under the License.
*/
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
+import AbstractAdapter from './abstract';
+
+export default AbstractAdapter.extend({
+ address: "rmWebAddress",
+ restNameSpace: "cluster",
+ serverName: "RM",
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT, // configurable
- namespace: 'ws/v1/cluster', // common const
pathForType(modelName) {
return 'scheduler'; // move to some common place, return path by modelname.
},
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
+
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-rm-node.js
index c6ad6f3..a24c399 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-rm-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-rm-node.js
@@ -16,15 +16,13 @@
* limitations under the License.
*/
-import DS from 'ember-data';
-import Config from 'yarn-ui/config';
+import AbstractAdapter from './abstract';
+
+export default AbstractAdapter.extend({
+ address: "rmWebAddress",
+ restNameSpace: "cluster",
+ serverName: "RM",
-export default DS.JSONAPIAdapter.extend({
- headers: {
- Accept: 'application/json'
- },
- host: 'http://localhost:1337/' + Config.RM_HOST + ':' + Config.RM_PORT,
- namespace: 'ws/v1/cluster',
pathForType(modelName) {
return 'nodes';
},
@@ -35,11 +33,4 @@ export default DS.JSONAPIAdapter.extend({
return url;
},
- ajax(url, method, hash) {
- hash = hash || {};
- hash.crossDomain = true;
- hash.xhrFields = {withCredentials: true};
- hash.targetServer = "RM";
- return this._super(url, method, hash);
- }
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/app.js
index 5617953..8c1025a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/app.js
@@ -17,7 +17,7 @@
*/
import Ember from 'ember';
-import Resolver from 'ember/resolver';
+import Resolver from 'ember-resolver';
import loadInitializers from 'ember/load-initializers';
import config from './config/environment';
import Sorter from 'yarn-ui/utils/sorter';
@@ -29,7 +29,7 @@ Ember.MODEL_FACTORY_INJECTIONS = true;
App = Ember.Application.extend({
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix,
- Resolver: Resolver
+ Resolver
});
loadInitializers(App, config.modulePrefix);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js
index 224c65a..157d48b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/config.js
@@ -19,9 +19,6 @@
/**
* Host and port configurations
*/
+
export default {
- RM_HOST: 'localhost',
- RM_PORT: '8088',
- TS_HOST: 'localhost',
- TS_PORT: '8188',
};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/index.html
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/index.html b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/index.html
index 969ea2f..f727454 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/index.html
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/index.html
@@ -34,6 +34,7 @@
</head>
<body>
{{content-for 'body'}}
+ <script src="config/configs.env" integrity=""></script>
<script src="assets/vendor.js"></script>
<script src="assets/yarn-ui.js"></script>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/env.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/env.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/env.js
new file mode 100644
index 0000000..c613593
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/env.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+
+export function initialize( application ) {
+ application.inject('controller', 'env', 'service:env');
+ application.inject('route', 'env', 'service:env');
+ application.inject('adapter', 'env', 'service:env');
+}
+
+export default {
+ name: 'env',
+ initialize
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/hosts.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/hosts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/hosts.js
new file mode 100644
index 0000000..6e3aa96
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/hosts.js
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ */
+
+export function initialize( application ) {
+ application.inject('controller', 'hosts', 'service:hosts');
+ application.inject('route', 'hosts', 'service:hosts');
+ application.inject('adapter', 'hosts', 'service:hosts');
+}
+
+export default {
+ name: 'hosts',
+ initialize
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/services/env.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/services/env.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/services/env.js
new file mode 100644
index 0000000..208499c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/services/env.js
@@ -0,0 +1,59 @@
+/*global more*/
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+import environment from '../config/environment';
+
+var MoreObject = more.Object;
+
+export default Ember.Service.extend({
+ ENV: null,
+
+ init: function () {
+ this.collateConfigs();
+ },
+
+ collateConfigs: function () {
+ var collatedENV = {
+ APP: {}
+ },
+ ENV = window.ENV;
+
+ MoreObject.merge(collatedENV, environment);
+
+ if(ENV) {
+ MoreObject.merge(collatedENV.APP, ENV);
+ }
+
+ this.setComputedENVs(collatedENV);
+
+ this.set("ENV", collatedENV);
+ },
+
+ setComputedENVs: function (env) {
+ var navigator = window.navigator;
+ env.isIE = navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0;
+ console.log('In setComputedENVs', env.isIE);
+ },
+
+ app: Ember.computed("ENV.APP", function () {
+ return this.get("ENV.APP");
+ })
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/services/hosts.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/services/hosts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/services/hosts.js
new file mode 100644
index 0000000..19863e1
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/services/hosts.js
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Service.extend({
+
+ env: Ember.inject.service("env"),
+
+ attachProtocolScheme: function (url) {
+ var localProto = this.get("env.app.hosts.protocolScheme");
+
+ if(localProto === "") {
+ localProto = "http:";
+ }
+
+ if(url.match("://")) {
+ url = url.substr(url.indexOf("://") + 3);
+ }
+
+ return localProto + "//" + url;
+ },
+
+ normalizeURL: function (url) {
+ var address;
+
+ // If localBaseAddress is configured, then normalized URL has to
+ // start with this address. For eg: when used with CORS proxy.
+ // In any case, this fn will return with correct proto scheme.
+ address = this.localAddress() + url;
+
+ // Remove trailing slash
+ if(address && address.charAt(address.length - 1) === '/') {
+ address = address.slice(0, -1);
+ }
+ return address;
+ },
+
+ localAddress: function () {
+ var localBaseAddressProto = "";
+
+ if (this.get("env.app.hosts.localBaseAddress").length > 0) {
+ localBaseAddressProto = this.get("env.app.hosts.localBaseAddress") + '/';
+ }
+ return this.attachProtocolScheme(localBaseAddressProto);
+ },
+
+ localBaseAddress: Ember.computed(function () {
+ return this.localAddress();
+ }),
+
+ timelineWebAddress: Ember.computed(function () {
+ return this.normalizeURL(this.get("env.app.hosts.timelineWebAddress"));
+ }),
+
+ rmWebAddress: Ember.computed(function () {
+ return this.normalizeURL(this.get("env.app.hosts.rmWebAddress"));
+ }),
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
index de66650..b23dbbc 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
@@ -1,18 +1,19 @@
{
"name": "yarn-ui",
"dependencies": {
- "ember": "2.0.1",
- "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.4",
- "ember-cli-test-loader": "ember-cli-test-loader#0.1.3",
- "ember-data": "2.0.0",
- "ember-load-initializers": "ember-cli/ember-load-initializers#0.1.6",
- "ember-qunit": "0.4.9",
- "ember-qunit-notifications": "0.0.7",
- "ember-resolver": "~0.1.18",
- "jquery": "1.11.3",
- "loader.js": "ember-cli/loader.js#3.2.1",
- "qunit": "~1.18.0",
- "bootstrap": "~3.3.2",
+ "ember": "2.2.0",
+ "ember-cli-shims": "0.0.6",
+ "ember-cli-test-loader": "0.2.1",
+ "ember-data": "2.1.0",
+ "ember-load-initializers": "0.1.7",
+ "ember-qunit": "0.4.16",
+ "ember-qunit-notifications": "0.1.0",
+ "jquery": "2.1.4",
+ "loader.js": "3.3.0",
+ "qunit": "1.19.0",
+ "jquery-ui": "1.11.4",
+ "more-js": "0.8.2",
+ "bootstrap": "3.3.6",
"d3": "~3.5.6",
"datatables": "~1.10.8",
"spin.js": "~2.3.2",
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/configs.env
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/configs.env b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/configs.env
new file mode 100644
index 0000000..04577c9
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/configs.env
@@ -0,0 +1,48 @@
+/**
+ * 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.
+ */
+
+ENV = {
+ hosts: {
+ /*
+ * Local URL. This is empty by default. In case when ResourceManager
+ * and Timeline Server (ATS) are running on same node, cross domain
+ * requests has to be supported. In such cases, proxy URL can be configured
+ * here to handle requests (CORS). For eg:"localhost:1337"
+ */
+ //localBaseAddress: "localhost:1337",
+
+ /*
+ * Timeline web interface can be configured below.
+ * By default timeline server is set as localhost:8188, uncomment and change
+ * the following value for pointing to a different address.
+ */
+ //timelineWebAddress: "localhost:8188",
+
+ /*
+ * RM web interface can be configured below.
+ * By default RM web address is set as localhost:8088, uncomment and change
+ * the following value for pointing to a different address.
+ */
+ //rmWebAddress: "localhost:8088",
+
+ /*
+ * Protocol scheme. It can be "http:" or "https:". By default, http is used.
+ */
+ //protocolScheme: "http:"
+ },
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
new file mode 100644
index 0000000..92d0721
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
@@ -0,0 +1,32 @@
+/**
+ * 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.
+ */
+
+module.exports = { // Yarn UI App configurations
+ hosts: {
+ localBaseAddress: "localhost:1337",
+ timelineWebAddress: "localhost:8188",
+ rmWebAddress: "localhost:8088",
+ protocolScheme: "http:"
+ },
+ namespaces: {
+ timeline: 'ws/v1/applicationhistory',
+ cluster: 'ws/v1/cluster',
+ metrics: 'ws/v1/cluster/metrics',
+ node: 'ws/v1/node'
+ },
+};
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
index 9a14068..118e0ba 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
@@ -18,6 +18,8 @@
/* jshint node: true */
+const DEFAULT_CONFIG = require('./default-config');
+
module.exports = function(environment) {
var ENV = {
modulePrefix: 'yarn-ui',
@@ -31,9 +33,12 @@ module.exports = function(environment) {
}
},
- APP: {
- // Here you can pass flags/options to your application instance
- // when it is created
+ APP: DEFAULT_CONFIG,
+ contentSecurityPolicy: {
+ 'connect-src': "* 'self'",
+ 'child-src': "'self' 'unsafe-inline'",
+ 'style-src': "'self' 'unsafe-inline'",
+ 'script-src': "'self' 'unsafe-inline'"
}
};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
index cf5ad83..bce18ce 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/ember-cli-build.js
@@ -17,6 +17,7 @@
*/
/* global require, module */
+var Funnel = require("broccoli-funnel");
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
module.exports = function(defaults) {
@@ -29,6 +30,8 @@ module.exports = function(defaults) {
app.import("bower_components/momentjs/min/moment.min.js");
app.import("bower_components/select2/dist/css/select2.min.css");
app.import("bower_components/select2/dist/js/select2.min.js");
+ app.import('bower_components/jquery-ui/jquery-ui.js');
+ app.import('bower_components/more-js/dist/more.js');
// Use `app.import` to add additional libraries to the generated
// output files.
@@ -42,6 +45,11 @@ module.exports = function(defaults) {
// modules that you would like to import into your application
// please specify an object with the list of modules as keys
// along with the exports of each module as its value.
+ var extraAssets = new Funnel('config', {
+ srcDir: '/',
+ include: ['*.env'],
+ destDir: '/config'
+ });
- return app.toTree();
+ return app.toTree(extraAssets);
};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
index b52ac1d..40febda 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
@@ -19,25 +19,28 @@
"author": "",
"license": "Apache",
"devDependencies": {
- "broccoli-asset-rev": "^2.1.2",
- "ember-bootstrap": "0.2.0",
- "ember-cli": "1.13.8",
- "ember-cli-app-version": "0.5.0",
- "ember-cli-babel": "^5.1.3",
+ "broccoli-asset-rev": "2.4.2",
+ "broccoli-funnel": "1.0.1",
+ "ember-bootstrap": "0.5.1",
+ "ember-cli": "1.13.13",
+ "ember-cli-app-version": "1.0.0",
+ "ember-cli-babel": "5.1.6",
"ember-cli-content-security-policy": "0.4.0",
- "ember-cli-dependency-checker": "^1.0.1",
- "ember-cli-htmlbars": "0.7.9",
- "ember-cli-htmlbars-inline-precompile": "^0.2.0",
+ "ember-cli-dependency-checker": "1.2.0",
+ "ember-cli-htmlbars": "1.0.2",
+ "ember-cli-htmlbars-inline-precompile": "0.3.1",
"ember-cli-ic-ajax": "0.2.1",
- "ember-cli-inject-live-reload": "^1.3.1",
- "ember-cli-qunit": "^1.0.0",
- "ember-cli-release": "0.2.3",
- "ember-cli-sri": "^1.0.3",
- "ember-cli-uglify": "^1.2.0",
+ "ember-cli-inject-live-reload": "1.4.0",
+ "ember-cli-jquery-ui": "0.0.20",
+ "ember-cli-qunit": "1.2.1",
+ "ember-cli-release": "0.2.8",
+ "ember-cli-sri": "1.2.1",
+ "ember-cli-uglify": "1.2.0",
"ember-d3": "0.1.0",
- "ember-data": "1.13.8",
- "ember-disable-proxy-controllers": "^1.0.0",
- "ember-export-application-global": "^1.0.3",
+ "ember-data": "2.1.0",
+ "ember-disable-proxy-controllers": "1.0.1",
+ "ember-export-application-global": "1.0.5",
+ "ember-resolver": "2.0.3",
"ember-spin-spinner": "0.2.3",
"select2": "4.0.0"
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/env-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/env-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/env-test.js
new file mode 100644
index 0000000..d6dacfd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/env-test.js
@@ -0,0 +1,41 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import { initialize } from '../../../initializers/env';
+import { module, test } from 'qunit';
+
+var registry, application;
+
+module('Unit | Initializer | env', {
+ beforeEach: function() {
+ Ember.run(function() {
+ application = Ember.Application.create();
+ registry = application.registry;
+ application.deferReadiness();
+ });
+ }
+});
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ initialize(registry, application);
+
+ // you would normally confirm the results of the initializer here
+ assert.ok(true);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/hosts-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/hosts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/hosts-test.js
new file mode 100644
index 0000000..b9a6b27
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/hosts-test.js
@@ -0,0 +1,41 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import { initialize } from '../../../initializers/hosts';
+import { module, test } from 'qunit';
+
+var registry, application;
+
+module('Unit | Initializer | hosts', {
+ beforeEach: function() {
+ Ember.run(function() {
+ application = Ember.Application.create();
+ registry = application.registry;
+ application.deferReadiness();
+ });
+ }
+});
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ initialize(registry, application);
+
+ // you would normally confirm the results of the initializer here
+ assert.ok(true);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/jquery-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/jquery-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/jquery-test.js
new file mode 100644
index 0000000..c7a9803
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/initializers/jquery-test.js
@@ -0,0 +1,41 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+import { initialize } from '../../../initializers/jquery';
+import { module, test } from 'qunit';
+
+var registry, application;
+
+module('Unit | Initializer | jquery', {
+ beforeEach: function() {
+ Ember.run(function() {
+ application = Ember.Application.create();
+ registry = application.registry;
+ application.deferReadiness();
+ });
+ }
+});
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ initialize(registry, application);
+
+ // you would normally confirm the results of the initializer here
+ assert.ok(true);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/services/env-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/services/env-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/services/env-test.js
new file mode 100644
index 0000000..9eb9367
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/services/env-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('service:env', 'Unit | Service | env', {
+ // Specify the other units that are required for this test.
+ // needs: ['service:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ var service = this.subject();
+ assert.ok(service);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/47d31011/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/services/hosts-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/services/hosts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/services/hosts-test.js
new file mode 100644
index 0000000..015748a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/services/hosts-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('service:hosts', 'Unit | Service | hosts', {
+ // Specify the other units that are required for this test.
+ // needs: ['service:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ var service = this.subject();
+ assert.ok(service);
+});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[32/50] [abbrv] hadoop git commit: YARN-5583. [YARN-3368] Fix wrong
paths in .gitignore (Sreenath Somarajapuram via Sunil G)
Posted by su...@apache.org.
YARN-5583. [YARN-3368] Fix wrong paths in .gitignore (Sreenath Somarajapuram via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b4b0dc8f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b4b0dc8f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b4b0dc8f
Branch: refs/heads/YARN-3368
Commit: b4b0dc8fe1cceac34a6799ae65ccb1cf204965f9
Parents: 2a9c5db
Author: sunilg <su...@apache.org>
Authored: Tue Aug 30 20:27:59 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.gitignore | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b4b0dc8f/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 792f725..d7e321e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,8 +35,8 @@ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/.sass-cache
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/connect.lock
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/coverage/*
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/libpeerconnection.log
-hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webappnpm-debug.log
-hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapptestem.log
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/npm-debug.log
+hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/testem.log
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/dist
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/tmp
yarnregistry.pdf
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[12/50] [abbrv] hadoop git commit: YARN-5321. [YARN-3368] Add
resource usage for application by node managers (Wangda Tan via Sunil G)
YARN-5320. [YARN-3368] Add resource usage by applications and queues to
cluster overview page (Wangda Tan via Sunil G)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
index ff49403..b945451 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
@@ -20,7 +20,9 @@ import Ember from 'ember';
export default Ember.Route.extend({
model() {
- var apps = this.store.findAll('yarn-app');
- return apps;
+ return Ember.RSVP.hash({
+ apps: this.store.findAll('yarn-app'),
+ clusterMetrics: this.store.findAll('ClusterMetric'),
+ });
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/apps.js
new file mode 100644
index 0000000..8719170
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/apps.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js
new file mode 100644
index 0000000..8719170
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
index 6e57388..64a1b3e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
@@ -22,6 +22,7 @@ export default Ember.Route.extend({
model(param) {
// Fetches data from both NM and RM. RM is queried to get node usage info.
return Ember.RSVP.hash({
+ nodeInfo: { id: param.node_id, addr: param.node_addr },
node: this.store.findRecord('yarn-node', param.node_addr),
rmNode: this.store.findRecord('yarn-rm-node', param.node_id)
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
index 5c46630..5639369 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
@@ -20,6 +20,9 @@ import Ember from 'ember';
export default Ember.Route.extend({
model() {
- return this.store.findAll('yarn-rm-node');
+ return Ember.RSVP.hash({
+ nodes: this.store.findAll('yarn-rm-node'),
+ clusterMetrics: this.store.findAll('ClusterMetric'),
+ });
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/heatmap.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/heatmap.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/heatmap.js
new file mode 100644
index 0000000..8719170
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/heatmap.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/table.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/table.js
new file mode 100644
index 0000000..38ae5d1
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes/table.js
@@ -0,0 +1,22 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
new file mode 100644
index 0000000..dff4ee9
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue-apps.js
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ selected : param.queue_name,
+ queues: this.store.findAll('yarn-queue'),
+ selectedQueue : undefined,
+ apps: undefined, // apps of selected queue
+ });
+ },
+
+ afterModel(model) {
+ var store = this.store;
+ model.selectedQueue = this.store.peekRecord('yarn-queue', model.selected);
+ model.apps = store.findAll('yarn-app');
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
new file mode 100644
index 0000000..06ceafb
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues.js
@@ -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.
+ */
+
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+ model(param) {
+ return Ember.RSVP.hash({
+ selected : param.queue_name,
+ queues: this.store.findAll('yarn-queue'),
+ selectedQueue : undefined,
+ apps: undefined, // apps of selected queue
+ });
+ },
+
+ afterModel(model) {
+ model.selectedQueue = this.store.peekRecord('yarn-queue', model.selected);
+ model.apps = this.store.findAll('yarn-app');
+ model.apps.forEach(function(o) {
+ console.log(o);
+ })
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
index 4c542c4..3de377a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
@@ -40,7 +40,8 @@ export default DS.JSONAPISerializer.extend({
nodeId: payload.nodeId,
hosts: payload.host,
state: payload.appAttemptState,
- logsLink: payload.logsLink
+ logsLink: payload.logsLink,
+ appAttemptId: payload.appAttemptId
}
};
@@ -59,12 +60,16 @@ export default DS.JSONAPISerializer.extend({
// return expected is { data: [ {}, {} ] }
var normalizedArrayResponse = {};
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = payload.appAttempts.appAttempt.map(singleApp => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleApp, singleApp.id, requestType);
- }, this);
+ if (payload.appAttempts && payload.appAttempts.appAttempt) {
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.appAttempts.appAttempt.map(singleApp => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleApp, singleApp.id, requestType);
+ }, this);
+ } else {
+ normalizedArrayResponse.data = [];
+ }
return normalizedArrayResponse;
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
index ba8c1f4..427c3d8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
@@ -39,6 +39,7 @@ export default DS.JSONAPISerializer.extend({
finishedTime: Converter.timeStampToDate(payload.finishedTime),
finalStatus: payload.finalStatus,
progress: payload.progress,
+ applicationType: payload.applicationType,
diagnostics: payload.diagnostics,
amContainerLogs: payload.amContainerLogs,
amHostHttpAddress: payload.amHostHttpAddress,
@@ -54,7 +55,10 @@ export default DS.JSONAPISerializer.extend({
preemptedResourceMB: payload.preemptedResourceMB,
preemptedResourceVCores: payload.preemptedResourceVCores,
numNonAMContainerPreempted: payload.numNonAMContainerPreempted,
- numAMContainerPreempted: payload.numAMContainerPreempted
+ numAMContainerPreempted: payload.numAMContainerPreempted,
+ clusterUsagePercentage: payload.clusterUsagePercentage,
+ queueUsagePercentage: payload.queueUsagePercentage,
+ currentAppAttemptId: payload.currentAppAttemptId
}
};
@@ -75,7 +79,7 @@ export default DS.JSONAPISerializer.extend({
// payload has apps : { app: [ {},{},{} ] }
// need some error handling for ex apps or app may not be defined.
- if(payload.apps) {
+ if(payload.apps && payload.apps.app) {
normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
return this.internalNormalizeSingleResponse(store, primaryModelClass,
singleApp, singleApp.id, requestType);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
index e051396..b9b923d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
@@ -57,13 +57,19 @@ export default DS.JSONAPISerializer.extend({
var normalizedArrayResponse = {};
if (payload && payload.container) {
- // payload has apps : { app: [ {},{},{} ] }
- // need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = payload.container.map(singleContainer => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
- singleContainer, singleContainer.id, requestType);
- }, this);
- return normalizedArrayResponse;
+ if (Array.isArray(payload.container)) {
+ // payload has apps : { app: [ {},{},{} ] }
+ // need some error handling for ex apps or app may not be defined.
+ normalizedArrayResponse.data = payload.container.map(singleContainer => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ singleContainer, singleContainer.id, requestType);
+ }, this);
+ } else {
+ normalizedArrayResponse.data = [this.internalNormalizeSingleResponse(
+ store, primaryModelClass, payload.container, payload.container.id,
+ requestType)];
+ }
+ return normalizedArrayResponse;
} else {
normalizedArrayResponse.data = [];
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
index e2d09dc..409aa15 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
@@ -16,11 +16,20 @@
* limitations under the License.
*/
+body, html, body > .ember-view {
+ height: 100%;
+ overflow: visible;
+ color: @text-color;
+}
+body, html {
+ min-width: 1024px;
+}
+
/*
Over all style
*/
text {
- font: 12px sans-serif;
+ font: 16px sans-serif;
}
text.small {
@@ -35,6 +44,7 @@ html, body
width: 100%;
}
+
/*
queue's style (left banner of queues)
*/
@@ -45,14 +55,30 @@ text.queue {
fill : gray;
}
-path.queue {
- stroke: gray;
- fill: none;
+text.heatmap-cell {
+ font: 14px sans-serif;
+ font-weight: bold;
+ text-anchor: middle;
+ fill: Azure;
+ text-align: center;
+}
+
+text.heatmap-cell-notselected {
+ font: 14px sans-serif;
+ font-weight: bold;
+ text-anchor: middle;
+ fill: Silver;
+ text-align: center;
}
-circle.queue {
- r: 10;
- fill: Steelblue;
+text.heatmap-rack {
+ font: 20px sans-serif;
+ fill: DimGray;
+}
+
+path.queue {
+ stroke: "red";
+ fill: none;
}
/*
@@ -76,24 +102,21 @@ text.chart-title {
fill: Gray;
}
-text.donut-highlight-text {
- font-size: 20px;
+text.donut-highlight-text, text.donut-highlight-sub {
+ font-size: 15px;
font-family: sans-serif;
text-anchor: middle;
fill: Gray;
vertical-align: middle;
}
-rect.chart-frame {
- fill: none;
- stroke: gray;
- stroke-dasharray: 10,10;
+text.donut-highlight-sub {
+ font-size: 23px;
+ margin-top: 10px;
}
-line.chart-leftbanner {
- stroke-width: 2;
- stroke: gray;
- stroke-dasharray: 10,10;
+rect.chart-frame {
+ fill: none;
}
text.bar-chart-text {
@@ -106,9 +129,8 @@ text.bar-chart-text {
div.tooltip {
position: absolute;
text-align: center;
- /*height: 28px;*/
- padding: 2px;
- font: 12px sans-serif;
+ padding: 2px;
+ font: 24px sans-serif;
background: lightsteelblue;
border: 0px;
border-radius: 8px;
@@ -135,6 +157,19 @@ table.dataTable thead .sorting_desc_disabled {
background-image: url("/assets/images/datatables/sort_desc_disabled.png");
}
+.add-ellipsis {
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.breadcrumb {
+ padding-bottom: 3px;
+}
+
+.navbar-default .navbar-nav > li > a {
+ color: #337ab7;
+}
+
/*
* Queue selector
*/
@@ -158,6 +193,70 @@ table.dataTable thead .sorting_desc_disabled {
stroke-width: 2px;
}
+.lr-margin {
+ margin: 0px 30px;
+}
+
+.footer {
+ background-color: @white;
+ color: @text-color;
+
+ padding: 10px 0px;
+ margin: 0px;
+
+ border-top: 1px lightgrey solid;
+
+ font-size: .9em;
+}
+
+.table {
+ margin-bottom: 0px;
+ border: none;
+
+ overflow: hidden;
+}
+
+.table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
+ border: none !important;
+}
+
+.dataTables_wrapper .table {
+ border: 1px solid lightgrey;
+ border-bottom: 1px solid lightgrey !important;
+ border-radious: 5px;
+}
+
+.dataTables_wrapper .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
+ border: 1px solid lightgrey;
+}
+
+td {
+ padding: 8px 15px 8px 15px !important;
+}
+
+.footer-frame {
+ height: 60px;
+}
+.footer {
+ height: 40px;
+}
+
+.footer-pusher {
+ min-height: 100%;
+ height: auto !important;
+ height: 100%;
+ margin: 0 auto -40px; // Must be same as footer & footer-frame
+}
+
+.panel-default .container-fluid {
+ margin-top: -45px !important;
+ margin-bottom: -10px !important;
+}
+
+.panel-heading {
+ font-weight: bold;
+}
+
.hadoop-brand-image {
margin-top: -10px;
width: auto;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
index 03b2c4a..7783db4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
@@ -16,47 +16,70 @@
* limitations under the License.
}}
-<nav class="navbar navbar-default">
- <div class="container-fluid">
- <!-- Brand and toggle get grouped for better mobile display -->
- <div class="navbar-header">
- <a class="navbar-brand" href="#">
- <img class="hadoop-brand-image" alt="Apache Hadoop" src="assets/images/hadoop_logo.png" />
- </a>
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- </div>
+<div class="footer-pusher">
- <!-- Collect the nav links, forms, and other content for toggling -->
- <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
- <ul class="nav navbar-nav">
- {{#link-to 'yarn-queue' 'root' tagName="li"}}
- {{#link-to 'yarn-queue' 'root' class="navigation-link"}}Queues
- <span class="sr-only">(current)</span>
+ <nav class="navbar navbar-default">
+ <div class="container-fluid">
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <a class="navbar-brand" href="#">
+ <img class="hadoop-brand-image" alt="Apache Hadoop" src="assets/images/hadoop_logo.png" />
+ </a>
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ </div>
+
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav">
+ {{#link-to 'cluster-overview' tagName="li"}}
+ {{#link-to 'cluster-overview' class="navigation-link"}}Cluster Overview
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
{{/link-to}}
- {{/link-to}}
- {{#link-to 'yarn-apps' tagName="li"}}
- {{#link-to 'yarn-apps' class="navigation-link"}}Applications
- <span class="sr-only">(current)</span>
+ {{#link-to 'yarn-queues' 'root' tagName="li"}}
+ {{#link-to 'yarn-queues' 'root' class="navigation-link"}}Queues
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
{{/link-to}}
- {{/link-to}}
- {{#link-to 'cluster-overview' tagName="li"}}
- {{#link-to 'cluster-overview' class="navigation-link"}}Cluster Overview
- <span class="sr-only">(current)</span>
+ {{#link-to 'yarn-apps.apps' tagName="li"}}
+ {{#link-to 'yarn-apps.apps' class="navigation-link"}}Applications
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
{{/link-to}}
- {{/link-to}}
- {{#link-to 'yarn-nodes' tagName="li"}}
- {{#link-to 'yarn-nodes' class="navigation-link"}}Nodes
- <span class="sr-only">(current)</span>
+ {{#link-to 'yarn-nodes.table' tagName="li"}}
+ {{#link-to 'yarn-nodes.table' class="navigation-link"}}Nodes
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
{{/link-to}}
- {{/link-to}}
- </ul>
- </div><!-- /.navbar-collapse -->
- </div><!-- /.container-fluid -->
-</nav>
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div><!-- /.container-fluid -->
+ </nav>
+
+ <div class="container-fluid">
+ {{outlet}}
+ </div>
+
+ <br/>
+ <br/>
+ <br/>
-{{outlet}}
+</div>
+
+<div class="footer">
+ <div class="container-fluid content">
+ <a href={{env.app.hrefs.license}} target="_blank">
+ Licensed under the Apache License, Version 2.0.
+ </a>
+ <div class="ui-info">
+ {{#if env.app.timezone}}
+ <span>Timezone <b>{{env.app.timezone}}</b></span>
+ {{/if}}
+ </div>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
index 2094092..fa90799 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs
@@ -16,59 +16,137 @@
* limitations under the License.
}}
-<div class="row">
- <div class="col-lg-3 container-fluid" id="finishedapps-donut-chart">
- {{donut-chart data=model.firstObject.getFinishedAppsDataForDonutChart
- title="Finished Apps"
- showLabels=true
- parentId="finishedapps-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
-
- <div class="col-lg-3 container-fluid" id="runningapps-donut-chart">
- {{donut-chart data=model.firstObject.getRunningAppsDataForDonutChart
- title="Running Apps"
- showLabels=true
- parentId="runningapps-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
</div>
-<hr>
+{{#if model}}
-<div class="row">
- <div class="col-lg-3 container-fluid" id="nodes-donut-chart">
- {{donut-chart data=model.firstObject.getNodesDataForDonutChart
- title="Node Managers"
- showLabels=true
- parentId="nodes-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
-</div>
+ <div class="col-md-12 container-fluid">
+ <div class="row">
+ <div class="col-lg-6 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Cluster Resource Usage By Applications
+ </div>
+ <div class="container-fluid" id="appusage-donut-chart">
+ {{app-usage-donut-chart data=model.apps
+ showLabels=true
+ parentId="appusage-donut-chart"
+ ratio=0.6
+ maxHeight=400}}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-6 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Cluster Resource Usage By Leaf Queues
+ </div>
+ <div class="container-fluid" id="queueusage-donut-chart">
+ {{queue-usage-donut-chart data=model.queues
+ showLabels=true
+ parentId="queueusage-donut-chart"
+ ratio=0.6
+ maxHeight=400}}
+ </div>
+ </div>
+ </div>
+ </div>
+ <hr>
-<hr>
+ <div class="row">
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Finished Apps
+ </div>
+ <div class="container-fluid" id="finishedapps-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getFinishedAppsDataForDonutChart
+ showLabels=true
+ parentId="finishedapps-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good warn error"}}
+ </div>
+ </div>
+ </div>
-<div class="row">
- <div class="col-lg-3 container-fluid" id="mem-donut-chart">
- {{donut-chart data=model.firstObject.getMemoryDataForDonutChart
- title="Resource - Memory"
- showLabels=true
- parentId="mem-donut-chart"
- ratio=0.55
- maxHeight=350}}
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Running Apps
+ </div>
+ <div class="container-fluid" id="runningapps-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getRunningAppsDataForDonutChart
+ showLabels=true
+ parentId="runningapps-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="warn good"}}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Node Managers
+ </div>
+ <div class="container-fluid" id="nodes-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getNodesDataForDonutChart
+ showLabels=true
+ parentId="nodes-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good error warn"}}
+ </div>
+ </div>
+ </div>
</div>
- <div class="col-lg-3 container-fluid" id="vcore-donut-chart">
- {{donut-chart data=model.firstObject.getVCoreDataForDonutChart
- title="Resource - VCores"
- showLabels=true
- parentId="vcore-donut-chart"
- ratio=0.6
- maxHeight=350}}
+ <hr>
+ <div class="row">
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Resource - Memory
+ </div>
+ <div class="container-fluid" id="mem-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getMemoryDataForDonutChart
+ showLabels=true
+ parentId="mem-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good"
+ colorTargetReverse=true
+ type="memory"}}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Resource - VCores
+ </div>
+ <div class="container-fluid" id="vcore-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getVCoreDataForDonutChart
+ showLabels=true
+ parentId="vcore-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good"
+ colorTargetReverse=true}}
+ </div>
+ </div>
+ </div>
</div>
</div>
+{{/if}}
+
+
{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
index 0788d9c..a036a0c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
@@ -20,6 +20,7 @@
<thead>
<tr>
<th>Application ID</th>
+ <th>Application Type</th>
<th>Name</th>
<th>User</th>
<th>Queue</th>
@@ -30,13 +31,15 @@
<th>Finished Time</th>
<th>Priority</th>
<th>Progress</th>
- </tr>
+ <th>%Cluster</th>
+ </tr>
</thead>
<tbody>
{{#if arr}}
{{#each arr as |app|}}
<tr>
<td><a href="#/yarn-app/{{app.id}}">{{app.id}}</a></td>
+ <td>{{app.applicationType}}</td>
<td>{{app.appName}}</td>
<td>{{app.user}}</td>
<td>{{app.queue}}</td>
@@ -53,11 +56,13 @@
</div>
</div>
</td>
+ <td>{{app.clusterUsagePercentage}}</td>
</tr>
{{/each}}
{{else}}
<tr>
<td><a href="#/yarn-app/{{app.id}}">{{app.id}}</a></td>
+ <td>{{app.applicationType}}</td>
<td>{{app.appName}}</td>
<td>{{app.user}}</td>
<td>{{app.queue}}</td>
@@ -74,7 +79,8 @@
</div>
</div>
</td>
- </tr>
+ <td>{{app.clusterUsagePercentage}}</td>
+ </tr>
{{/if}}
</tbody>
</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
index 1e07e89..d2486c9 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
@@ -19,7 +19,7 @@
<div class="col-md-2 container-fluid">
<div class="panel panel-default">
<div class="panel-heading">
- <h4>Node Manager<br>({{node-name nodeId}})</h4>
+ <h4>Node Manager</h4>
</div>
<div class="panel-body">
<ul class="nav nav-pills nav-stacked" id="stacked-menu">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/nodes-heatmap.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/nodes-heatmap.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/nodes-heatmap.hbs
new file mode 100644
index 0000000..e9e6261
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/nodes-heatmap.hbs
@@ -0,0 +1,27 @@
+{{!
+ * 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.
+}}
+
+<div class="container-fluid">
+ <div class="row">
+ <div class="col-md-6 container-fluid">
+ <input type="text" class="form-control" aria-label="..." placeholder="Enter part of host/rack to filter nodes"
+ onchange={{action "applyFilter"}}>
+ </div>
+ </div>
+</div>
+<p/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
index 9045976..17a1e1a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-configuration-table.hbs
@@ -25,10 +25,6 @@
</thead>
<tbody>
<tr>
- <td>Queue Name</td>
- <td>{{queue.id}}</td>
- </tr>
- <tr>
<td>Configured Capacity</td>
<td>{{queue.capacity}}</td>
</tr>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
index fb9c6c8..d8dd236 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/queue-navigator.hbs
@@ -16,21 +16,13 @@
* limitations under the License.
}}
-<div class="row">
- <div class="col-lg-4">
- <select class="js-example-basic-single" width="100%" id="queue-name-selector">
- {{item-selector element-id="queue-name-selector" prefix="Queue : " model=model}}
- </select>
- </div>
-</div><!-- /.row -->
-
<!-- queue selector -->
<div class="row">
- <div class="col-md-12 container-fluid" id="tree-selector-container">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default" id="tree-selector-container">
{{tree-selector model=model parentId="tree-selector-container" selected=selected}}
+ </div>
</div>
</div>
-<hr>
-
{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
index 6f529ba..b110268 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
@@ -26,12 +26,13 @@
{{/if}}
</div>
<div class="panel-body">
+ <br/><br/>
<div class="col-md-8 container-fluid" id={{parent-id}}>
</div>
<!-- diag info -->
<div class="col-md-4 container-fluid">
- <div class="panel panel-default">
+ <div class="panel panel-default add-ellipsis">
<div class="panel-heading">
{{#if selected.link}}
{{#link-to selected.linkname selected.id}}{{selected.id}}{{/link-to}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
index b01eceb..c30040b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
@@ -16,10 +16,21 @@
* limitations under the License.
}}
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+<br/><br/><br/>
<div class="container-fluid">
<div class="row">
{{#if model.attempt}}
- {{app-attempt-table attempt=model.attempt}}
+ <div class="container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Application attempt Information
+ </div>
+ {{app-attempt-table attempt=model.attempt}}
+ </div>
+ </div>
{{/if}}
</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
new file mode 100644
index 0000000..ffaa60d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
@@ -0,0 +1,57 @@
+{{!
+ * 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.
+}}
+
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Application</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-app' tagName="li"}}
+ {{#link-to 'yarn-app' model.appId}}Information
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-app-attempts' tagName="li"}}
+ {{#link-to 'yarn-app-attempts' model.appId}}Attempts List
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-10 container-fluid">
+ <!-- timeline view of children -->
+ <div class="row">
+ {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
+ </div>
+ </div>
+
+ </div>
+</div>
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
index 2bc20f2..4db4f8a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
@@ -16,148 +16,238 @@
* limitations under the License.
}}
-<div class="container-fluid">
- <!-- app table -->
- <div class="row">
- <div class="col-md-12 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">
- Application Basic Information
- </div>
- {{app-table table-id="app-table" app=model.app}}
- </div>
- </div>
- </div>
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
- <!-- diag info and other infos -->
+{{#if model.app}}
+<div class="col-md-12 container-fluid">
<div class="row">
- <!-- diag info -->
- <div class="col-md-4 container-fluid">
- {{#if model.app.isFailed}}
- <div class="panel panel-danger">
- <div class="panel-heading">
- Diagnostics
- </div>
- <div class="panel-body">{{model.app.diagnostics}}</div>
+
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Application</h4>
</div>
- {{else}}
- <div class="panel panel-default">
- <div class="panel-body">
- Diagnostics
- </div>
- <div class="panel-footer">{{model.app.diagnostics}}</div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-app' tagName="li"}}
+ {{#link-to 'yarn-app' model.app.id}}Information
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-app-attempts' tagName="li"}}
+ {{#link-to 'yarn-app-attempts' model.app.id}}Attempts List
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
</div>
- {{/if}}
+ </div>
</div>
- <div class="col-md-5 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">Scheduling Info</div>
- <table class="table">
- <tbody>
- <tr>
- <td>Allocated Resource</td>
- <td>{{model.app.allocatedResource}}</td>
- </tr>
- <tr>
- <td>Running Containers</td>
- <td>{{model.app.runningContainersNumber}}</td>
- </tr>
- <tr>
- <td>Preempted Resource</td>
- <td>{{model.app.preemptedResource}}</td>
- </tr>
- <tr>
- <td>Num Non-AM container preempted</td>
- <td>{{model.app.numAMContainerPreempted}}</td>
- </tr>
- <tr>
- <td>Num AM container preempted</td>
- <td>{{model.app.numAMContainerPreempted}}</td>
- </tr>
- <tr>
- <td>Aggregated Resource Usage</td>
- <td>{{model.app.aggregatedResourceUsage}}</td>
- </tr>
- </tbody>
- </table>
+ <div class="col-md-10 container-fluid">
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Basic Info</div>
+ <table class="display table table-striped table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Application ID</th>
+ <th>Name</th>
+ <th>User</th>
+ <th>Queue</th>
+ <th>State</th>
+ <th>Final Status</th>
+ <th>Start Time</th>
+ <th>Elapsed Time</th>
+ <th>Finished Time</th>
+ <th>Priority</th>
+ <th>Progress</th>
+ <th>Is Unmanaged AM</th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <tr>
+ <td>{{model.app.id}}</td>
+ <td>{{model.app.appName}}</td>
+ <td>{{model.app.user}}</td>
+ <td>{{model.app.queue}}</td>
+ <td>{{model.app.state}}</td>
+ <td>
+ <span class={{model.app.finalStatusStyle}}>
+ {{model.app.finalStatus}}
+ </span>
+ </td>
+ <td>{{model.app.startTime}}</td>
+ <td>{{model.app.elapsedTime}}</td>
+ <td>{{model.app.validatedFinishedTs}}</td>
+ <td>{{model.app.priority}}</td>
+ <td>
+ <div class="progress" style="margin-bottom: 0;">
+ <div class="progress-bar" role="progressbar"
+ aria-valuenow="60" aria-valuemin="0"
+ aria-valuemax="100"
+ style={{model.app.progressStyle}}>
+ {{model.app.progress}}%
+ </div>
+ </div>
+ </td>
+ <td>{{model.app.unmanagedApplication}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
</div>
- </div>
- <!-- other info -->
- <div class="col-md-3 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">Other Info</div>
- <table class="table">
- <tbody>
- <tr>
- <td>AM Container Log</td>
- <td><a href={{model.app.amContainerLogs}}>Link</a></td>
- </tr>
- <tr>
- <td>AM Host Http Addr</td>
- <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
- </tr>
- <tr>
- <td>Log Aggregation Status</td>
- <td>{{model.app.logAggregationStatus}}</td>
- </tr>
- <tr>
- <td>Is Unmanaged AM</td>
- <td>{{model.app.unmanagedApplication}}</td>
- </tr>
- <tr>
- <td>AM Node Label Expression</td>
- <td>{{model.app.amNodeLabelExpression}}</td>
- </tr>
- </tbody>
- </table>
+ <div class="row">
+ {{#if model.app.diagnostics}}
+ <div class="col-md-12 container-fluid">
+ {{#if model.app.isFailed}}
+ <div class="panel panel-danger">
+ <div class="panel-heading">
+ Diagnostics
+ </div>
+ <div class="panel-body">{{model.app.diagnostics}}</div>
+ </div>
+ {{else}}
+ <div class="panel panel-default">
+ <div class="panel-body">
+ Diagnostics
+ </div>
+ <div class="panel-footer">{{model.app.diagnostics}}</div>
+ </div>
+ {{/if}}
+ </div>
+ {{/if}}
</div>
- </div>
- </div>
-<!--
- <div class="row">
- <div class="col-md-12 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">
- Application Attempts
+ <div class="row">
+ <div class="col-md-8 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Scheduling Info</div>
+ <table class="display table table-striped table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Allocated Resource</th>
+ <th>Running Containers</th>
+ <th>Preempted Resource</th>
+ <th>Num Non-AM container preempted</th>
+ <th>Num AM container preempted</th>
+ <th>Aggregated Resource Usage</th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <tr>
+ <td>{{model.app.allocatedResource}}</td>
+ <td>{{model.app.runningContainersNumber}}</td>
+ <td>{{model.app.preemptedResource}}</td>
+ <td>{{model.app.numAMContainerPreempted}}</td>
+ <td>{{model.app.numAMContainerPreempted}}</td>
+ <td>{{model.app.aggregatedResourceUsage}}</td>
+ </tr>
+ </tbody>
+ </table>
</div>
- <table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
- <thead>
+ </div>
+
+ <div class="col-md-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">App Master Info</div>
+ <table class="display table table-striped table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
<tr>
- <th>Start Time</th>
- <th>Master ContainerId</th>
- <th>Node Http Address</th>
- <th>Node Id</th>
- <th>Logs Link</th>
- </tr>
- </thead>
- <tbody>
- {{#each model.attempts as |attempt|}}
- <tr>
- <td>{{attempt.startTime}}</td>
- <td>{{attempt.containerId}}</td>
- <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
- <td>{{attempt.nodeId}}</td>
- <td><a href={{attempt.logsLink}}>link</a></td>
- </tr>
- {{/each}}
- </tbody>
- </table>
+ <th>Master Container Log</th>
+ <td>Master Node</td>
+ <td>Master Node Label Expr</td>
+ </tr>
+ </thead>
+
+ <tbody>
+ <tr>
+ <td><a href={{model.app.amContainerLogs}}>Link</a></td>
+ <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
+ <td>{{model.app.amNodeLabelExpression}}</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</div>
- </div>
- </div>
--->
- <!-- timeline view of children -->
- <div class="row">
- {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
- </div>
-</div>
+ </div>
+
+ {{#if model.nodes}}
+ {{#if model.rmContainers}}
+ <div class="row" id="stackd-bar-chart-mem">
+ {{per-app-memusage-by-nodes-stacked-barchart
+ nodes=model.nodes
+ rmContainers=model.rmContainers
+ parentId="stackd-bar-chart-mem"
+ title=(concat 'Memory usage by nodes for: [' model.app.id ']')}}
+ </div>
+
+ <hr>
+
+ <div class="row" id="stackd-bar-chart-ncontainer">
+ {{per-app-ncontainers-by-nodes-stacked-barchart
+ nodes=model.nodes
+ rmContainers=model.rmContainers
+ parentId="stackd-bar-chart-ncontainer"
+ title=(concat 'Running #Containers by nodes for: [' model.app.id ']')}}
+ </div>
+ {{/if}}
+ {{/if}}
-<!--
-{{simple-table table-id="app-attempt-table" paging=false bFilter=false}}
--->
+ </div>
+
+ <!--
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Application Attempts
+ </div>
+ <table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
+ <thead>
+ <tr>
+ <th>Start Time</th>
+ <th>Master ContainerId</th>
+ <th>Node Http Address</th>
+ <th>Node Id</th>
+ <th>Logs Link</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each model.attempts as |attempt|}}
+ <tr>
+ <td>{{attempt.startTime}}</td>
+ <td>{{attempt.containerId}}</td>
+ <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
+ <td>{{attempt.nodeId}}</td>
+ <td><a href={{attempt.logsLink}}>link</a></td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ -->
+ <!-- timeline view of children -->
+ <!--
+ <div class="row">
+ {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
+ </div>
+ -->
+ </div>
+</div>
+{{/if}}
{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
index 0fc6edf..ec17379 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
@@ -15,10 +15,78 @@
* See the License for the specific language governing permissions and
* limitations under the License.
}}
-{{#if model}}
- {{app-table table-id="apps-table" arr=model}}
- {{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc" colTypes="natural elapsed-time" colTargets="0 7"}}
-{{else}}
- <h4 align = "center">Could not find any applications from this cluster</h4>
-{{/if}}
-{{outlet}}
+
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Application</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-apps.apps' tagName="li"}}
+ {{#link-to 'yarn-apps.apps'}}All Applications
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-apps.services' tagName="li"}}
+ {{#link-to 'yarn-apps.services'}}Long Running Services
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-10 container-fluid">
+ {{#if model.clusterMetrics}}
+ <div class="row">
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Finished Apps
+ </div>
+ <div class="container-fluid" id="finishedapps-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getFinishedAppsDataForDonutChart
+ showLabels=true
+ parentId="finishedapps-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good warn error"
+ }}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Running Apps
+ </div>
+ <div class="container-fluid" id="runningapps-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getRunningAppsDataForDonutChart
+ showLabels=true
+ parentId="runningapps-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="warn good"
+ }}
+ </div>
+ </div>
+ </div>
+ </div>
+ {{/if}}
+
+ <div class="row">
+ {{outlet}}
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/apps.hbs
new file mode 100644
index 0000000..a2ba163
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/apps.hbs
@@ -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.
+--}}
+
+{{#if model.apps}}
+ {{app-table table-id="apps-table" arr=model.apps}}
+ {{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc" colTypes="natural elapsed-time" colTargets="0 7"}}
+{{else}}
+ <h4 align="center">Could not find any applications from this cluster</h4>
+{{/if}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs
new file mode 100644
index 0000000..e472e8e
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs
@@ -0,0 +1,27 @@
+{{!--
+ 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.
+--}}
+
+{{#if model.apps}}
+ {{app-table table-id="apps-table" arr=model.apps}}
+ {{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc"
+ colTypes="natural elapsed-time" colTargets="0 7" defaultSearch="slider"}}
+{{else}}
+ <h4 align="center">Could not find any applications from this cluster</h4>
+{{/if}}
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
index 42de7eb..832e452 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
@@ -17,6 +17,10 @@
--}}
<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
<div class="row">
{{node-menu-panel path="yarn-node-apps" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
{{#if model.apps}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
index 4104eec..224c695 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
@@ -17,6 +17,10 @@
--}}
<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
<div class="row">
{{node-menu-panel path="yarn-node-container" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10 container-fluid">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
index 3ebcc6f..e96c83f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
@@ -17,6 +17,10 @@
--}}
<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
<div class="row">
{{node-menu-panel path="yarn-node-containers" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
{{#if model.containers}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
index d6f30ec..ddec5c4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
@@ -17,78 +17,104 @@
--}}
<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
<div class="row">
+
{{node-menu-panel path="yarn-node" nodeId=model.rmNode.id nodeAddr=model.node.id}}
+
<div class="col-md-10 container-fluid">
- <div class="panel panel-default">
- <div class="panel-heading">Node Information</div>
+
+ <div class="row">
+ <div class="col-md-12 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">Node Information</div>
<table class="table">
<tbody>
- <tr>
- <td>Total Vmem allocated for Containers</td>
- <td>{{divide num=model.node.totalVmemAllocatedContainersMB den=1024}} GB</td>
- </tr>
- <tr>
- <td>Vmem enforcement enabled</td>
- <td>{{model.node.vmemCheckEnabled}}</td>
- </tr>
- <tr>
- <td>Total Pmem allocated for Containers</td>
- <td>{{divide num=model.node.totalPmemAllocatedContainersMB den=1024}} GB</td>
- </tr>
- <tr>
- <td>Pmem enforcement enabled</td>
- <td>{{model.node.pmemCheckEnabled}}</td>
- </tr>
- <tr>
- <td>Total VCores allocated for Containers</td>
- <td>{{model.node.totalVCoresAllocatedContainers}}</td>
- </tr>
- <tr>
- <td>Node Healthy Status</td>
- <td>{{model.node.nodeHealthy}}</td>
- </tr>
- <tr>
- <td>Last Node Health Report Time</td>
- <td>{{model.node.lastNodeUpdateTime}}</td>
- </tr>
- <tr>
- <td>Node Health Report</td>
- <td>{{model.node.healthReport}}</td>
- </tr>
- <tr>
- <td>Node Manager Start Time</td>
- <td>{{model.node.nmStartupTime}}</td>
- </tr>
- <tr>
- <td>Node Manager Version</td>
- <td>{{model.node.nodeManagerBuildVersion}}</td>
- </tr>
- <tr>
- <td>Hadoop Version</td>
- <td>{{model.node.hadoopBuildVersion}}</td>
- </tr>
+ <tr>
+ <td>Total Vmem allocated for Containers</td>
+ <td>{{divide num=model.node.totalVmemAllocatedContainersMB den=1024}} GB</td>
+ </tr>
+ <tr>
+ <td>Vmem enforcement enabled</td>
+ <td>{{model.node.vmemCheckEnabled}}</td>
+ </tr>
+ <tr>
+ <td>Total Pmem allocated for Containers</td>
+ <td>{{divide num=model.node.totalPmemAllocatedContainersMB den=1024}} GB</td>
+ </tr>
+ <tr>
+ <td>Pmem enforcement enabled</td>
+ <td>{{model.node.pmemCheckEnabled}}</td>
+ </tr>
+ <tr>
+ <td>Total VCores allocated for Containers</td>
+ <td>{{model.node.totalVCoresAllocatedContainers}}</td>
+ </tr>
+ <tr>
+ <td>Node Healthy Status</td>
+ <td>{{model.node.nodeHealthy}}</td>
+ </tr>
+ <tr>
+ <td>Last Node Health Report Time</td>
+ <td>{{model.node.lastNodeUpdateTime}}</td>
+ </tr>
+ <tr>
+ <td>Node Health Report</td>
+ <td>{{model.node.healthReport}}</td>
+ </tr>
+ <tr>
+ <td>Node Manager Start Time</td>
+ <td>{{model.node.nmStartupTime}}</td>
+ </tr>
+ <tr>
+ <td>Node Manager Version</td>
+ <td>{{model.node.nodeManagerBuildVersion}}</td>
+ </tr>
+ <tr>
+ <td>Hadoop Version</td>
+ <td>{{model.node.hadoopBuildVersion}}</td>
+ </tr>
</tbody>
</table>
</div>
- <div class="col-lg-4 container-fluid" id="mem-donut-chart">
- {{donut-chart data=model.rmNode.getMemoryDataForDonutChart
- title="Resource - Memory (in MB)"
- showLabels=true
- parentId="mem-donut-chart"
- ratio=0.55
- maxHeight=350}}
+ </div>
</div>
- <div class="col-lg-4 container-fluid" id="vcore-donut-chart">
- {{donut-chart data=model.rmNode.getVCoreDataForDonutChart
- title="Resource - VCores"
- showLabels=true
- parentId="vcore-donut-chart"
- ratio=0.55
- maxHeight=350}}
- </div>
+ <div class="row">
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Resource - Memory (in MB)
+ </div>
+ <div class="container-fluid" id="mem-donut-chart">
+ {{donut-chart data=model.rmNode.getMemoryDataForDonutChart
+ showLabels=true
+ parentId="mem-donut-chart"
+ ratio=0.6
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Resource - VCores
+ </div>
+ <div class="container-fluid" id="vcore-donut-chart">
+ {{donut-chart data=model.rmNode.getVCoreDataForDonutChart
+ showLabels=true
+ parentId="vcore-donut-chart"
+ ratio=0.6
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
</div>
</div>
+ </div>
</div>
{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
index 3c78498..ffab3e9 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
@@ -16,48 +16,57 @@
limitations under the License.
--}}
-{{#if model}}
-<table id="nodes-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
- <thead>
- <tr>
- <th>Node Labels</th>
- <th>Rack</th>
- <th>Node State</th>
- <th>Node Address</th>
- <th>Node HTTP Address</th>
- <th>Last Health Update</th>
- <th>Health-Report</th>
- <th>Containers</th>
- <th>Mem Used</th>
- <th>Mem Avail</th>
- <th>VCores Used</th>
- <th>VCores Avail</th>
- <th>Version</th>
- </tr>
- </thead>
- <tbody>
- {{#each model as |node|}}
- <tr>
- <td>{{node.nodeLabelsAsString}}</td>
- <td>{{node.rack}}</td>
- <td><span class={{node.nodeStateStyle}}>{{node.state}}</span></td>
- <td>{{node.id}}</td>
- {{node-link nodeId=node.id nodeHTTPAddress=node.nodeHTTPAddress nodeState=node.state}}
- <td>{{node.lastHealthUpdate}}</td>
- <td>{{node.healthReport}}</td>
- <td>{{node.numContainers}}</td>
- <td>{{divide num=node.usedMemoryMB den=1024}} GB</td>
- <td>{{divide num=node.availMemoryMB den=1024}} GB</td>
- <td>{{node.usedVirtualCores}}</td>
- <td>{{node.availableVirtualCores}}</td>
- <td>{{node.version}}</td>
- </tr>
- {{/each}}
- </tbody>
-</table>
-
-{{simple-table table-id="nodes-table" bFilter=true}}
-{{else}}
- <h4 align = "center">No nodes found on this cluster</h4>
-{{/if}}
-{{outlet}}
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="row">
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Nodes</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+
+ {{#link-to "yarn-nodes.table" tagName="li"}}
+ {{#link-to 'yarn-nodes.table'}}Nodes Table
+ {{/link-to}}
+ {{/link-to}}
+
+ {{#link-to 'yarn-nodes.heatmap' tagName="li"}}
+ {{#link-to 'yarn-nodes.heatmap'}}Nodes Heatmap Chart
+ {{/link-to}}
+ {{/link-to}}
+
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-10 container-fluid">
+ {{#if model.clusterMetrics}}
+ <div class="row">
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Node Managers
+ </div>
+ <div class="container-fluid" id="nodes-donut-chart">
+ {{donut-chart data=model.clusterMetrics.firstObject.getNodesDataForDonutChart
+ showLabels=true
+ parentId="nodes-donut-chart"
+ ratio=0.6
+ maxHeight=350
+ colorTargets="good error warn"}}
+ </div>
+ </div>
+ </div>
+ </div>
+ {{/if}}
+
+ {{outlet}}
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/heatmap.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/heatmap.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/heatmap.hbs
new file mode 100644
index 0000000..e06249f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/heatmap.hbs
@@ -0,0 +1,30 @@
+{{!--
+ 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.
+--}}
+
+{{#if model.nodes}}
+
+ <div class="row">
+ <div class="col-lg-12 container-fluid" id="nodes-heatmap-chart">
+ {{nodes-heatmap model=model.nodes parentId="nodes-heatmap-chart"
+ title="Node Heatmap Chart (Usage of Memory)"}}
+ </div>
+ </div>
+
+{{/if}}
+
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/table.hbs
new file mode 100644
index 0000000..d9fae3a
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes/table.hbs
@@ -0,0 +1,67 @@
+{{!--
+ 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.
+--}}
+<div class="row">
+
+ {{#if model.nodes}}
+ <table id="nodes-table" class="display table table-striped table-bordered"
+ cellspacing="0" width="100%">
+ <thead>
+ <tr>
+ <th>Node Labels</th>
+ <th>Rack</th>
+ <th>Node State</th>
+ <th>Node Address</th>
+ <th>Node HTTP Address</th>
+ <th>Last Health Update</th>
+ <th>Health-Report</th>
+ <th>Containers</th>
+ <th>Mem Used</th>
+ <th>Mem Avail</th>
+ <th>VCores Used</th>
+ <th>VCores Avail</th>
+ <th>Version</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each model.nodes as |node|}}
+ <tr>
+ <td>{{node.nodeLabelsAsString}}</td>
+ <td>{{node.rack}}</td>
+ <td><span class={{node.nodeStateStyle}}>{{node.state}}</span></td>
+ <td>{{node.id}}</td>
+ {{node-link nodeId=node.id nodeHTTPAddress=node.nodeHTTPAddress nodeState=node.state}}
+ <td>{{node.lastHealthUpdate}}</td>
+ <td>{{node.healthReport}}</td>
+ <td>{{node.numContainers}}</td>
+ <td>{{divide num=node.usedMemoryMB den=1024}} GB</td>
+ <td>{{divide num=node.availMemoryMB den=1024}} GB</td>
+ <td>{{node.usedVirtualCores}}</td>
+ <td>{{node.availableVirtualCores}}</td>
+ <td>{{node.version}}</td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+
+ {{simple-table table-id="nodes-table" bFilter=true}}
+ {{else}}
+ <h4 align="center">No nodes found on this cluster</h4>
+ {{/if}}
+</div>
+
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
new file mode 100644
index 0000000..7cfd4c6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue-apps.hbs
@@ -0,0 +1,66 @@
+{{!
+ * 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.
+}}
+
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="col-md-12 container-fluid">
+ <div class="row">
+
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Application</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-queue' tagName="li"}}
+ {{#link-to 'yarn-queue' model.selected}}Information
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-queue-apps' tagName="li"}}
+ {{#link-to 'yarn-queue-apps' model.selected}}Applications List
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-10 container-fluid">
+ <!-- timeline view of children -->
+ <div class="row">
+
+ <div class="col-lg-12 container-fluid">
+ {{#if model.apps}}
+ {{app-table table-id="apps-table" arr=model.apps}}
+ {{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
+ {{else}}
+ <h4 align = "center">Could not find any applications from this cluster</h4>
+ {{/if}}
+ </div>
+
+ </div>
+ </div>
+
+ </div>
+</div>
+{{outlet}}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[41/50] [abbrv] hadoop git commit: YARN-4515. [YARN-3368] Support
hosting web UI framework inside YARN RM. (Sunil G via wangda) YARN-5000.
[YARN-3368] App attempt page is not loading when timeline server is not
started (Sunil G via wangda) YARN-5038. [YA
Posted by su...@apache.org.
YARN-4515. [YARN-3368] Support hosting web UI framework inside YARN RM. (Sunil G via wangda)
YARN-5000. [YARN-3368] App attempt page is not loading when timeline server is not started (Sunil G via wangda)
YARN-5038. [YARN-3368] Application and Container pages shows wrong values when RM is stopped. (Sunil G via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/cd7cf2cb
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/cd7cf2cb
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/cd7cf2cb
Branch: refs/heads/YARN-3368
Commit: cd7cf2cb28bd55615640dc505e5eaf50150ddcb8
Parents: 1c609da
Author: Wangda Tan <wa...@apache.org>
Authored: Tue May 17 22:28:24 2016 -0700
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
LICENSE.txt | 2 +
.../resources/assemblies/hadoop-yarn-dist.xml | 7 ++
.../hadoop/yarn/conf/YarnConfiguration.java | 23 ++++++
.../src/main/resources/yarn-default.xml | 26 +++++++
.../server/resourcemanager/ResourceManager.java | 76 +++++++++++++++++---
.../hadoop-yarn/hadoop-yarn-ui/pom.xml | 4 +-
.../webapp/app/adapters/yarn-app-attempt.js | 4 +-
.../webapp/app/adapters/yarn-container-log.js | 2 +-
.../main/webapp/app/adapters/yarn-node-app.js | 10 ++-
.../webapp/app/adapters/yarn-node-container.js | 10 ++-
.../src/main/webapp/app/adapters/yarn-node.js | 5 +-
.../main/webapp/app/components/timeline-view.js | 17 +++--
.../main/webapp/app/components/tree-selector.js | 4 +-
.../main/webapp/app/helpers/log-files-comma.js | 2 +-
.../src/main/webapp/app/helpers/node-link.js | 2 +-
.../src/main/webapp/app/helpers/node-menu.js | 6 +-
.../src/main/webapp/app/helpers/node-name.js | 46 ++++++++++++
.../main/webapp/app/models/yarn-app-attempt.js | 72 ++++++++++++++++++-
.../src/main/webapp/app/models/yarn-app.js | 14 ++++
.../main/webapp/app/models/yarn-container.js | 7 ++
.../main/webapp/app/routes/yarn-app-attempt.js | 6 +-
.../webapp/app/serializers/yarn-app-attempt.js | 5 +-
.../src/main/webapp/app/serializers/yarn-app.js | 11 ++-
.../webapp/app/serializers/yarn-container.js | 3 +-
.../webapp/app/serializers/yarn-node-app.js | 5 +-
.../app/serializers/yarn-node-container.js | 5 +-
.../main/webapp/app/serializers/yarn-rm-node.js | 5 +-
.../main/webapp/app/templates/application.hbs | 21 +++++-
.../templates/components/app-attempt-table.hbs | 22 +++++-
.../app/templates/components/app-table.hbs | 8 +--
.../templates/components/container-table.hbs | 4 +-
.../templates/components/node-menu-panel.hbs | 44 ++++++++++++
.../app/templates/components/timeline-view.hbs | 2 +-
.../src/main/webapp/app/templates/error.hbs | 2 +-
.../webapp/app/templates/yarn-app-attempt.hbs | 4 ++
.../src/main/webapp/app/templates/yarn-app.hbs | 2 +-
.../src/main/webapp/app/templates/yarn-apps.hbs | 9 ++-
.../main/webapp/app/templates/yarn-node-app.hbs | 4 +-
.../webapp/app/templates/yarn-node-apps.hbs | 12 ++--
.../app/templates/yarn-node-container.hbs | 2 +-
.../app/templates/yarn-node-containers.hbs | 12 ++--
.../src/main/webapp/app/templates/yarn-node.hbs | 2 +-
.../main/webapp/app/templates/yarn-nodes.hbs | 10 ++-
.../main/webapp/app/templates/yarn-queue.hbs | 8 ++-
.../src/main/webapp/config/environment.js | 2 +-
.../hadoop-yarn-ui/src/main/webapp/package.json | 2 +
.../webapp/tests/unit/helpers/node-name-test.js | 28 ++++++++
47 files changed, 486 insertions(+), 93 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/LICENSE.txt
----------------------------------------------------------------------
diff --git a/LICENSE.txt b/LICENSE.txt
index e3a4c34..8f418af 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -2328,6 +2328,7 @@ The Apache Hadoop YARN Web UI component bundles the following files under the MI
- datatables v1.10.8 (https://datatables.net/)
- moment v2.10.6 (http://momentjs.com/) - Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors
- em-helpers v0.5.8 (https://github.com/sreenaths/em-helpers)
+ - ember-array-contains-helper v1.0.2 (https://github.com/bmeurant/ember-array-contains-helper)
- ember-cli-app-version v0.5.8 (https://github.com/EmberSherpa/ember-cli-app-version) - Authored by Taras Mankovski <ta...@gmail.com>
- ember-cli-babel v5.1.6 (https://github.com/babel/ember-cli-babel) - Authored by Stefan Penner <st...@gmail.com>
- ember-cli-content-security-policy v0.4.0 (https://github.com/rwjblue/ember-cli-content-security-policy)
@@ -2341,6 +2342,7 @@ The Apache Hadoop YARN Web UI component bundles the following files under the MI
- ember-cli-sri v1.2.1 (https://github.com/jonathanKingston/ember-cli-sri) - Authored by Jonathan Kingston
- ember-cli-uglify v1.2.0 (github.com/ember-cli/ember-cli-uglify) - Authored by Robert Jackson <me...@rwjblue.com>
- ember-d3 v0.1.0 (https://github.com/brzpegasus/ember-d3) - Authored by Estelle DeBlois
+ - ember-truth-helpers v1.2.0 (https://github.com/jmurphyau/ember-truth-helpers)
- select2 v4.0.0 (https://select2.github.io/)
All rights reserved.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml
----------------------------------------------------------------------
diff --git a/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml b/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml
index 219ed81..c3f459c 100644
--- a/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml
+++ b/hadoop-assemblies/src/main/resources/assemblies/hadoop-yarn-dist.xml
@@ -192,6 +192,13 @@
<directory>${project.build.directory}/site</directory>
<outputDirectory>/share/doc/hadoop/${hadoop.component}</outputDirectory>
</fileSet>
+ <fileSet>
+ <directory>hadoop-yarn/hadoop-yarn-ui/target/hadoop-yarn-ui-${project.version}</directory>
+ <outputDirectory>/share/hadoop/${hadoop.component}/webapps/rm</outputDirectory>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ </fileSet>
</fileSets>
<moduleSets>
<moduleSet>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
index 3f84a23..0134465 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
@@ -262,7 +262,30 @@ public class YarnConfiguration extends Configuration {
public static final int DEFAULT_RM_WEBAPP_HTTPS_PORT = 8090;
public static final String DEFAULT_RM_WEBAPP_HTTPS_ADDRESS = "0.0.0.0:"
+ DEFAULT_RM_WEBAPP_HTTPS_PORT;
+
+ /**
+ * Enable YARN WebApp V2.
+ */
+ public static final String RM_WEBAPP_UI2_ENABLE = RM_PREFIX
+ + "webapp.ui2.enable";
+ public static final boolean DEFAULT_RM_WEBAPP_UI2_ENABLE = false;
+
+ /** The address of the RM web ui2 application. */
+ public static final String RM_WEBAPP_UI2_ADDRESS = RM_PREFIX
+ + "webapp.ui2.address";
+
+ public static final int DEFAULT_RM_WEBAPP_UI2_PORT = 8288;
+ public static final String DEFAULT_RM_WEBAPP_UI2_ADDRESS = "0.0.0.0:" +
+ DEFAULT_RM_WEBAPP_UI2_PORT;
+ /** The https address of the RM web ui2 application.*/
+ public static final String RM_WEBAPP_UI2_HTTPS_ADDRESS =
+ RM_PREFIX + "webapp.ui2.https.address";
+
+ public static final int DEFAULT_RM_WEBAPP_UI2_HTTPS_PORT = 8290;
+ public static final String DEFAULT_RM_WEBAPP_UI2_HTTPS_ADDRESS = "0.0.0.0:"
+ + DEFAULT_RM_WEBAPP_UI2_HTTPS_PORT;
+
public static final String RM_RESOURCE_TRACKER_ADDRESS =
RM_PREFIX + "resource-tracker.address";
public static final int DEFAULT_RM_RESOURCE_TRACKER_PORT = 8031;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
index 6c247b0..114b9ed 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
@@ -180,6 +180,32 @@
</property>
<property>
+ <description>To enable RM web ui2 application.</description>
+ <name>yarn.resourcemanager.webapp.ui2.enable</name>
+ <value>false</value>
+ </property>
+
+ <property>
+ <description>
+ The http address of the RM web ui2 application.
+ If only a host is provided as the value,
+ the webapp will be served on a random port.
+ </description>
+ <name>yarn.resourcemanager.webapp.ui2.address</name>
+ <value>${yarn.resourcemanager.hostname}:8288</value>
+ </property>
+
+ <property>
+ <description>
+ The https address of the RM web ui2 application.
+ If only a host is provided as the value,
+ the webapp will be served on a random port.
+ </description>
+ <name>yarn.resourcemanager.webapp.ui2.https.address</name>
+ <value>${yarn.resourcemanager.hostname}:8290</value>
+ </property>
+
+ <property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
index d2d706d..d32f649 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
@@ -18,16 +18,6 @@
package org.apache.hadoop.yarn.server.resourcemanager;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintStream;
-import java.net.InetSocketAddress;
-import java.nio.charset.Charset;
-import java.security.PrivilegedExceptionAction;
-import java.security.SecureRandom;
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.curator.framework.AuthInfo;
@@ -38,10 +28,12 @@ import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ha.HAServiceProtocol;
import org.apache.hadoop.ha.HAServiceProtocol.HAServiceState;
+import org.apache.hadoop.http.HttpServer2;
import org.apache.hadoop.http.lib.StaticUserWebFilter;
import org.apache.hadoop.metrics2.MetricsSystem;
import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
import org.apache.hadoop.metrics2.source.JvmMetrics;
+import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.security.AuthenticationFilterInitializer;
import org.apache.hadoop.security.Groups;
import org.apache.hadoop.security.HttpCrossOriginFilterInitializer;
@@ -124,6 +116,16 @@ import org.apache.hadoop.yarn.webapp.util.WebAppUtils;
import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;
import com.google.common.annotations.VisibleForTesting;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.net.InetSocketAddress;
+import java.net.URI;
+import java.nio.charset.Charset;
+import java.security.PrivilegedExceptionAction;
+import java.security.SecureRandom;
+import java.util.ArrayList;
+import java.util.List;
/**
* The ResourceManager is the main class that is a set of components.
@@ -909,7 +911,49 @@ public class ResourceManager extends CompositeService implements Recoverable {
}
}
}
-
+
+ /**
+ * Return a HttpServer.Builder that the journalnode / namenode / secondary
+ * namenode can use to initialize their HTTP / HTTPS server.
+ *
+ */
+ public static HttpServer2.Builder httpServerTemplateForRM(Configuration conf,
+ final InetSocketAddress httpAddr, final InetSocketAddress httpsAddr,
+ String name) throws IOException {
+ HttpServer2.Builder builder = new HttpServer2.Builder().setName(name)
+ .setConf(conf).setSecurityEnabled(false);
+
+ if (httpAddr.getPort() == 0) {
+ builder.setFindPort(true);
+ }
+
+ URI uri = URI.create("http://" + NetUtils.getHostPortString(httpAddr));
+ builder.addEndpoint(uri);
+ LOG.info("Starting Web-server for " + name + " at: " + uri);
+
+ return builder;
+ }
+
+ protected void startWebAppV2() throws IOException {
+ Configuration config = getConfig();
+ final InetSocketAddress httpAddr = config.getSocketAddr(
+ YarnConfiguration.RM_WEBAPP_UI2_ADDRESS,
+ YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_ADDRESS,
+ YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_PORT);
+ final InetSocketAddress httpsAddr = config.getSocketAddr(
+ YarnConfiguration.RM_WEBAPP_UI2_HTTPS_ADDRESS,
+ YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_HTTPS_ADDRESS,
+ YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_HTTPS_PORT);
+
+ HttpServer2.Builder builder = httpServerTemplateForRM(config, httpAddr,
+ httpsAddr, "rm");
+
+ HttpServer2 infoServer = builder.build();
+ infoServer.start();
+
+ LOG.info("Web server init done");
+ }
+
protected void startWepApp() {
// Use the customized yarn filter instead of the standard kerberos filter to
@@ -1128,6 +1172,16 @@ public class ResourceManager extends CompositeService implements Recoverable {
transitionToActive();
}
+ if (getConfig().getBoolean(YarnConfiguration.RM_WEBAPP_UI2_ENABLE,
+ YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_ENABLE)) {
+ try {
+ startWebAppV2();
+ LOG.info("Yarn WebApp UI 2 is started");
+ } catch (Exception e) {
+ LOG.error("Failed to start Yarn web app v2:" + e.getMessage());
+ }
+ }
+
startWepApp();
if (getConfig().getBoolean(YarnConfiguration.IS_MINI_YARN_CLUSTER,
false)) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
index 66bf54a..6d46fda 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/pom.xml
@@ -20,12 +20,12 @@
<parent>
<artifactId>hadoop-yarn</artifactId>
<groupId>org.apache.hadoop</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0-alpha1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-ui</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0-alpha1-SNAPSHOT</version>
<name>Apache Hadoop YARN UI</name>
<packaging>${packaging.type}</packaging>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
index d10ba45..78f5e02 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-attempt.js
@@ -31,10 +31,8 @@ export default AbstractAdapter.extend({
urlForFindRecord(id, modelName, snapshot) {
var url = this._buildURL();
- var url = url + '/apps/' +
+ return url + '/apps/' +
Converter.attemptIdToAppId(id) + "/appattempts/" + id;
- console.log('app-attempt url:',url);
- return url;
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
index 39c3c87..9f2d5d7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-container-log.js
@@ -42,7 +42,7 @@ export default DS.RESTAdapter.extend({
var nodeHttpAddr = splits[0];
var containerId = splits[1];
var filename = splits[2];
- this.host = this.host + nodeHttpAddr;
+ this.host = this.get('host') + nodeHttpAddr;
var url = this._buildURL();
url = url + "/containerlogs/" + containerId + "/" + filename;
return url;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
index fd6c021..eaddfcb 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-app.js
@@ -25,14 +25,20 @@ export default AbstractAdapter.extend({
serverName: "NM",
urlForQuery(query) {
- this.host = this.get("host") + query.nodeAddr;
+ var extension = this.get("host").split('/').pop();
+ if (extension != query.nodeAddr) {
+ this.host = this.get("host") + query.nodeAddr;
+ }
var url = this._buildURL();
url = url + "/apps";
return url;
},
urlForQueryRecord: function (query) {
- this.host = this.get("host") + query.nodeAddr;
+ var extension = this.get("host").split('/').pop();
+ if (extension != query.nodeAddr) {
+ this.host = this.get("host") + query.nodeAddr;
+ }
var url = this._buildURL();
url = url + "/apps/" + query.appId;
return url;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
index caf1e3f..56c4bcd 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node-container.js
@@ -25,14 +25,20 @@ export default AbstractAdapter.extend({
serverName: "NM",
urlForQuery(query) {
- this.host = this.get("host") + query.nodeHttpAddr;
+ var extension = this.get("host").split('/').pop();
+ if (extension != query.nodeHttpAddr) {
+ this.host = this.get("host") + query.nodeHttpAddr;
+ }
var url = this._buildURL();
url = url + "/containers";
return url;
},
urlForQueryRecord(query) {
- this.host = this.get("host") + query.nodeHttpAddr;
+ var extension = this.get("host").split('/').pop();
+ if (extension != query.nodeHttpAddr) {
+ this.host = this.get("host") + query.nodeHttpAddr;
+ }
var url = this._buildURL();
url = url + "/containers/" + query.containerId;
return url;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
index c9f36c3..7a0fc4a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-node.js
@@ -25,7 +25,10 @@ export default AbstractAdapter.extend({
serverName: "NM",
urlForFindRecord(id, modelName, snapshot) {
- this.host = this.get("host") + id;
+ var extension = this.get("host").split('/').pop();
+ if (extension != id) {
+ this.host = this.get("host") + id;
+ }
var url = this._buildURL();
return url;
},
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
index b92f4bf..8a2b3de 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/timeline-view.js
@@ -225,18 +225,27 @@ export default Ember.Component.extend({
didInsertElement: function() {
// init tooltip
this.initTooltip();
+ this.modelArr = [];
// init model
if (this.get("rmModel")) {
this.get("rmModel").forEach(function(o) {
- this.modelArr.push(o);
+ if(!this.modelArr.contains(o)) {
+ this.modelArr.push(o);
+ }
}.bind(this));
}
if (this.get("tsModel")) {
- this.get("tsModel").forEach(function(o) {
- this.modelArr.push(o);
- }.bind(this));
+ this.get("tsModel").forEach(function(o) {
+ if(!this.modelArr.contains(o)) {
+ this.modelArr.push(o);
+ }
+ }.bind(this));
+ }
+
+ if(this.modelArr.length == 0) {
+ return;
}
this.modelArr.sort(function(a, b) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
index 698c253..1af98ab 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
@@ -126,7 +126,7 @@ export default Ember.Component.extend({
.attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
.on("click", function(d,i){
if (d.queueData.get("name") != this.get("selected")) {
- document.location.href = "yarn-queue/" + d.queueData.get("name");
+ document.location.href = "#/yarn-queue/" + d.queueData.get("name");
}
}.bind(this));
// .on("click", click);
@@ -176,7 +176,7 @@ export default Ember.Component.extend({
.attr("r", 20)
.attr("href",
function(d) {
- return "yarn-queues/" + d.queueData.get("name");
+ return "#/yarn-queues/" + d.queueData.get("name");
})
.style("stroke", function(d) {
if (d.queueData.get("name") == this.get("selected")) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
index b6b57ec..192e1ed 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
@@ -36,7 +36,7 @@ export default Ember.Helper.helper(function(params,hash) {
var html = '<td>';
var logFilesCommaSeparated = "";
for (var i = 0; i < logFilesLen; i++) {
- html = html + '<a href="yarn-container-log/' + nodeId + '/' +
+ html = html + '<a href="#/yarn-container-log/' + nodeId + '/' +
nodeAddr + '/' + containerId + '/' + logFiles[i] + '">' + logFiles[i] +
'</a>';
if (i != logFilesLen - 1) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
index 331f082..e524f08 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
@@ -29,7 +29,7 @@ export default Ember.Helper.helper(function(params,hash) {
if (nodeState == "SHUTDOWN" || nodeState == "LOST") {
html = html + nodeHTTPAddress;
} else {
- html = html + '<a href="yarn-node/' + nodeId + "/" + nodeHTTPAddress + '">' +
+ html = html + '<a href="#/yarn-node/' + nodeId + "/" + nodeHTTPAddress + '">' +
nodeHTTPAddress + '</a>';
}
html = html + '</td>';
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
index 2538d7d..d4a73a4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
@@ -50,17 +50,17 @@ export default Ember.Helper.helper(function(params,hash) {
if (hash.path == 'yarn-node') {
html = html + ' class="active"';
}
- html = html + '><a href="yarn-node/' + hash.nodeId + '/' + hash.nodeAddr +
+ html = html + '><a href="#/yarn-node/' + hash.nodeId + '/' + hash.nodeAddr +
'">Node Information</a></li><li';
if (hash.path == 'yarn-node-apps') {
html = html + ' class="active"';
}
- html = html + '><a href="yarn-node-apps/' + hash.nodeId + '/' + hash.nodeAddr +
+ html = html + '><a href="#/yarn-node-apps/' + hash.nodeId + '/' + hash.nodeAddr +
'">List of Applications</a></li><li';
if (hash.path == 'yarn-node-containers') {
html = html + ' class="active"';
}
- html = html + '><a href="yarn-node-containers/' +hash.nodeId + '/' + hash.nodeAddr +
+ html = html + '><a href="#/yarn-node-containers/' +hash.nodeId + '/' + hash.nodeAddr +
'">List of Containers</a></li></ul></ul></div>';
return Ember.String.htmlSafe(html);
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-name.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-name.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-name.js
new file mode 100644
index 0000000..56ce373
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-name.js
@@ -0,0 +1,46 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export function nodeName(params/*, hash*/) {
+ // Place a menu within a panel inside col-md-2 container.
+ console.log('nodes-uid', params[0]);
+ var nodeIdSplitAtPort = params[0];
+ var portIndex = nodeIdSplitAtPort.indexOf(':');
+ if (portIndex != -1) {
+ nodeIdSplitAtPort = nodeIdSplitAtPort.substring(0, portIndex) +
+ ':​' + nodeIdSplitAtPort.substring(portIndex + 1);
+ }
+ var normalizedNodeId = '';
+ var splitsAlongDots = nodeIdSplitAtPort.split('.');
+ if (splitsAlongDots) {
+ var len = splitsAlongDots.length;
+ for (var i = 0; i < len; i++) {
+ normalizedNodeId = normalizedNodeId + splitsAlongDots[i];
+ if (i != len - 1) {
+ normalizedNodeId = normalizedNodeId + '.​';
+ }
+ }
+ } else {
+ normalizedNodeId = nodeIdSplitAtPort;
+ }
+ return Ember.String.htmlSafe(normalizedNodeId);
+}
+
+export default Ember.Helper.helper(nodeName);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
index 8079907..b913a33 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
@@ -21,14 +21,29 @@ import Converter from 'yarn-ui/utils/converter';
export default DS.Model.extend({
startTime: DS.attr('string'),
+ startedTime: DS.attr('string'),
finishedTime: DS.attr('string'),
containerId: DS.attr('string'),
+ amContainerId: DS.attr('string'),
nodeHttpAddress: DS.attr('string'),
nodeId: DS.attr('string'),
+ hosts: DS.attr('string'),
logsLink: DS.attr('string'),
+ state: DS.attr('string'),
+
+ attemptStartedTime: function() {
+ var startTime = this.get("startTime");
+ // If startTime variable is not present, get from startedTime
+ if (startTime == undefined ||
+ startTime == "Invalid date") {
+ startTime = this.get("startedTime");
+ }
+
+ return startTime;
+ }.property("startedTime"),
startTs: function() {
- return Converter.dateToTimeStamp(this.get("startTime"));
+ return Converter.dateToTimeStamp(this.get('attemptStartedTime'));
}.property("startTime"),
finishedTs: function() {
@@ -36,11 +51,57 @@ export default DS.Model.extend({
return ts;
}.property("finishedTime"),
+ validatedFinishedTs: function() {
+ if (this.get("finishedTs") < this.get("startTs")) {
+ return "";
+ }
+ return this.get("finishedTime");
+ }.property("finishedTime"),
+
shortAppAttemptId: function() {
+ if (!this.get("containerId")) {
+ return this.get("id");
+ }
return "attempt_" +
parseInt(Converter.containerIdToAttemptId(this.get("containerId")).split("_")[3]);
}.property("containerId"),
+ appMasterContainerId: function() {
+ var id = this.get("containerId");
+ // If containerId variable is not present, get from amContainerId
+ if (id == undefined) {
+ id = this.get("amContainerId");
+ }
+ return id;
+ }.property("amContainerId"),
+
+ IsAmNodeUrl: function() {
+ var url = this.get("nodeHttpAddress");
+ // If nodeHttpAddress variable is not present, hardcode it.
+ if (url == undefined) {
+ url = "Not Available";
+ }
+ return url != "Not Available";
+ }.property("nodeHttpAddress"),
+
+ amNodeId : function() {
+ var id = this.get("nodeId");
+ // If nodeId variable is not present, get from host
+ if (id == undefined) {
+ id = this.get("hosts");
+ }
+ return id;
+ }.property("nodeId"),
+
+ IsLinkAvailable: function() {
+ var url = this.get("logsLink");
+ // If logsLink variable is not present, hardcode its.
+ if (url == undefined) {
+ url = "Not Available";
+ }
+ return url != "Not Available";
+ }.property("logsLink"),
+
elapsedTime: function() {
var elapsedMs = this.get("finishedTs") - this.get("startTs");
if (elapsedMs <= 0) {
@@ -59,4 +120,13 @@ export default DS.Model.extend({
link: function() {
return "/yarn-app-attempt/" + this.get("id");
}.property(),
+
+ linkname: function() {
+ return "yarn-app-attempt";
+ }.property(),
+
+ attemptState: function() {
+ return this.get("state");
+ }.property(),
+
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
index 1d506c2..a96c17c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js
@@ -51,6 +51,13 @@ export default DS.Model.extend({
return this.get('finalStatus') == "FAILED"
}.property("finalStatus"),
+ validatedFinishedTs: function() {
+ if (this.get("finishedTime") < this.get("startTime")) {
+ return "";
+ }
+ return this.get("finishedTime");
+ }.property("finishedTime"),
+
allocatedResource: function() {
return Converter.resourceToString(this.get("allocatedMB"), this.get("allocatedVCores"));
}.property("allocatedMB", "allocatedVCores"),
@@ -67,6 +74,13 @@ export default DS.Model.extend({
return "width: " + this.get("progress") + "%";
}.property("progress"),
+ runningContainersNumber: function() {
+ if(this.get("runningContainers") < 0) {
+ return 0;
+ }
+ return this.get("runningContainers");
+ }.property("progress"),
+
finalStatusStyle: function() {
var style = "default";
var finalStatus = this.get("finalStatus");
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container.js
index b745296..bd9cea7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-container.js
@@ -40,6 +40,13 @@ export default DS.Model.extend({
return ts;
}.property("finishedTime"),
+ validatedFinishedTs: function() {
+ if (this.get("finishedTs") < this.get("startTs")) {
+ return "";
+ }
+ return this.get("finishedTime");
+ }.property("finishedTime"),
+
elapsedTime: function() {
var elapsedMs = this.get("finishedTs") - this.get("startTs");
if (elapsedMs <= 0) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
index a65118d..a8f27f5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
@@ -33,7 +33,11 @@ export default Ember.Route.extend({
{
app_attempt_id: param.app_attempt_id,
is_rm: false
- }),
+ }).catch (function() {
+ // Promise rejected, fulfill with some default value to
+ // use as the route's model and continue on with the transition
+ return [];
+ })
});
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
index 291589c..4c542c4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-attempt.js
@@ -32,11 +32,14 @@ export default DS.JSONAPISerializer.extend({
type: primaryModelClass.modelName, // yarn-app
attributes: {
startTime: Converter.timeStampToDate(payload.startTime),
+ startedTime: Converter.timeStampToDate(payload.startedTime),
finishedTime: Converter.timeStampToDate(payload.finishedTime),
containerId: payload.containerId,
+ amContainerId: payload.amContainerId,
nodeHttpAddress: payload.nodeHttpAddress,
nodeId: payload.nodeId,
- state: payload.nodeId,
+ hosts: payload.host,
+ state: payload.appAttemptState,
logsLink: payload.logsLink
}
};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
index 234ad24..ba8c1f4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js
@@ -75,10 +75,15 @@ export default DS.JSONAPISerializer.extend({
// payload has apps : { app: [ {},{},{} ] }
// need some error handling for ex apps or app may not be defined.
- normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
- return this.internalNormalizeSingleResponse(store, primaryModelClass,
+ if(payload.apps) {
+ normalizedArrayResponse.data = payload.apps.app.map(singleApp => {
+ return this.internalNormalizeSingleResponse(store, primaryModelClass,
singleApp, singleApp.id, requestType);
- }, this);
+ }, this);
+ } else {
+ normalizedArrayResponse.data = [];
+ }
+
return normalizedArrayResponse;
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
index 6f0386f..e051396 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-container.js
@@ -64,9 +64,10 @@ export default DS.JSONAPISerializer.extend({
singleContainer, singleContainer.id, requestType);
}, this);
return normalizedArrayResponse;
+ } else {
+ normalizedArrayResponse.data = [];
}
- normalizedArrayResponse.data = [];
return normalizedArrayResponse;
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
index 8b1f152..5945813 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-app.js
@@ -76,10 +76,7 @@ export default DS.JSONAPISerializer.extend({
} else {
// No container reported inside containers.
// Response of the form { "apps": null }
- normalizedArrayResponse.data = Ember.makeArray({
- id: "dummy",
- type: primaryModelClass.modelName,
- attributes: {}});
+ normalizedArrayResponse.data = [];
}
return normalizedArrayResponse;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
index 528f2fe..a104f1e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-node-container.js
@@ -64,10 +64,7 @@ export default DS.JSONAPISerializer.extend({
} else {
// No container reported inside containers.
// Response of the form { "containers": null }
- normalizedArrayResponse.data = Ember.makeArray({
- id: "dummy",
- type: primaryModelClass.modelName,
- attributes: {}});
+ normalizedArrayResponse.data = [];
}
return normalizedArrayResponse;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-rm-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-rm-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-rm-node.js
index 6cb9320..6feab36 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-rm-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-rm-node.js
@@ -67,10 +67,7 @@ export default DS.JSONAPISerializer.extend({
singleNode, singleNode.id);
}, this);
} else {
- normalizedArrayResponse.data = Ember.makeArray({
- id: "dummy",
- type: primaryModelClass.modelName,
- attributes: {}});
+ normalizedArrayResponse.data = [];
}
return normalizedArrayResponse;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
index 88702c4..b45ec6b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
@@ -32,7 +32,26 @@
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
- {{outputMainMenu}}
+ {{#link-to 'yarn-queue' 'root' tagName="li"}}
+ {{#link-to 'yarn-queue' 'root'}}Queues
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-apps' tagName="li"}}
+ {{#link-to 'yarn-apps'}}Applications
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'cluster-overview' tagName="li"}}
+ {{#link-to 'cluster-overview'}}Cluster Overview
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-nodes' tagName="li"}}
+ {{#link-to 'yarn-nodes'}}Nodes
+ <span class="sr-only">(current)</span>
+ {{/link-to}}
+ {{/link-to}}
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-attempt-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-attempt-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-attempt-table.hbs
index 722f780..2b16f86 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-attempt-table.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-attempt-table.hbs
@@ -24,23 +24,39 @@
</tr>
<tr>
<td>Start Time</td>
- <td>{{attempt.startTime}}</td>
+ <td>{{attempt.attemptStartedTime}}</td>
</tr>
<tr>
<td>AM Container Id</td>
- <td>{{attempt.containerId}}</td>
+ <td>{{attempt.appMasterContainerId}}</td>
</tr>
+ {{#if attempt.IsAmNodeUrl}}
<tr>
<td>AM Node Web UI</td>
<td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
</tr>
+ {{/if}}
<tr>
<td>AM Node Id</td>
- <td>{{attempt.nodeId}}</td>
+ <td>{{attempt.amNodeId}}</td>
</tr>
+ {{#if attempt.IsLinkAvailable}}
<tr>
<td>Log</td>
<td><a href={{attempt.logsLink}}>link</a></td>
</tr>
+ {{/if}}
+ {{#if attempt.attemptState}}
+ <tr>
+ <td>Attempt State</td>
+ <td>{{attempt.attemptState}}</td>
+ </tr>
+ {{/if}}
+ {{#if attempt.elapsedTime}}
+ <tr>
+ <td>Elapsed Time</td>
+ <td>{{attempt.elapsedTime}}</td>
+ </tr>
+ {{/if}}
</tbody>
</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
index 6e8badc..0788d9c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
@@ -36,7 +36,7 @@
{{#if arr}}
{{#each arr as |app|}}
<tr>
- <td><a href="yarn-app/{{app.id}}">{{app.id}}</a></td>
+ <td><a href="#/yarn-app/{{app.id}}">{{app.id}}</a></td>
<td>{{app.appName}}</td>
<td>{{app.user}}</td>
<td>{{app.queue}}</td>
@@ -44,7 +44,7 @@
<td><span class={{app.finalStatusStyle}}>{{app.finalStatus}}</span></td>
<td>{{app.startTime}}</td>
<td>{{app.elapsedTime}}</td>
- <td>{{app.finishedTime}}</td>
+ <td>{{app.validatedFinishedTs}}</td>
<td>{{app.priority}}</td>
<td>
<div class="progress" style="margin-bottom: 0;">
@@ -57,7 +57,7 @@
{{/each}}
{{else}}
<tr>
- <td><a href="yarn-app/{{app.id}}">{{app.id}}</a></td>
+ <td><a href="#/yarn-app/{{app.id}}">{{app.id}}</a></td>
<td>{{app.appName}}</td>
<td>{{app.user}}</td>
<td>{{app.queue}}</td>
@@ -65,7 +65,7 @@
<td><span class={{app.finalStatusStyle}}>{{app.finalStatus}}</span></td>
<td>{{app.startTime}}</td>
<td>{{app.elapsedTime}}</td>
- <td>{{app.finishedTime}}</td>
+ <td>{{app.validatedFinishedTs}}</td>
<td>{{app.priority}}</td>
<td>
<div class="progress" style="margin-bottom: 0;">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/container-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/container-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/container-table.hbs
index dcc31da..0736a69 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/container-table.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/container-table.hbs
@@ -24,7 +24,7 @@
</tr>
<tr>
<td>Finished Time</td>
- <td>{{container.finishedTime}}</td>
+ <td>{{container.validatedFinishedTs}}</td>
</tr>
<tr>
<td>Elapsed Time</td>
@@ -48,7 +48,7 @@
</tr>
<tr>
<td>NodeManager UI</td>
- <td>{{container.nodeHttpAddress}}</td>
+ <td><a href={{container.nodeHttpAddress}}>{{container.nodeHttpAddress}}</a></td>
</tr>
</tbody>
</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
new file mode 100644
index 0000000..1e07e89
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/node-menu-panel.hbs
@@ -0,0 +1,44 @@
+{{!
+ * 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.
+}}
+
+<div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Node Manager<br>({{node-name nodeId}})</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-node' tagName="li"}}
+ {{#link-to 'yarn-node' nodeId nodeAddr}}Node Information
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-node-apps' tagName="li"}}
+ {{#link-to 'yarn-node-apps' nodeId nodeAddr}}List of Applications
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-node-containers' tagName="li"}}
+ {{#link-to 'yarn-node-containers' nodeId nodeAddr}}List of Containers
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
index 2eb3441..6f529ba 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/timeline-view.hbs
@@ -34,7 +34,7 @@
<div class="panel panel-default">
<div class="panel-heading">
{{#if selected.link}}
- <a href={{selected.link}}>{{selected.id}}</a>
+ {{#link-to selected.linkname selected.id}}{{selected.id}}{{/link-to}}
{{else}}
{{selected.id}}
{{/if}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/error.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/error.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/error.hbs
index c546bf7..2e2a6e5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/error.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/error.hbs
@@ -16,4 +16,4 @@
limitations under the License.
--}}
-<h3 align = "center">Sorry, Error Occured.</h3>
+<h3 align = "center">Sorry, Error Occurred.</h3>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
index a0343b5..b01eceb 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempt.hbs
@@ -18,12 +18,16 @@
<div class="container-fluid">
<div class="row">
+ {{#if model.attempt}}
{{app-attempt-table attempt=model.attempt}}
+ {{/if}}
</div>
<!-- containers table -->
<div class="row">
+ {{#if (or model.rmContainers model.tsContainers)}}
{{timeline-view parent-id="containers-timeline-div" my-id="timeline-view" height="400" rmModel=model.rmContainers tsModel=model.tsContainers label="shortAppAttemptId" attemptModel=false}}
+ {{/if}}
</div>
</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
index d306e64..2bc20f2 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
@@ -61,7 +61,7 @@
</tr>
<tr>
<td>Running Containers</td>
- <td>{{model.app.runningContainers}}</td>
+ <td>{{model.app.runningContainersNumber}}</td>
</tr>
<tr>
<td>Preempted Resource</td>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
index 98b9107..0fc6edf 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
@@ -15,7 +15,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
}}
-
-{{app-table table-id="apps-table" arr=model}}
-{{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc" colTypes="natural elapsed-time" colTargets="0 7"}}
+{{#if model}}
+ {{app-table table-id="apps-table" arr=model}}
+ {{simple-table table-id="apps-table" bFilter=true colsOrder="0,desc" colTypes="natural elapsed-time" colTargets="0 7"}}
+{{else}}
+ <h4 align = "center">Could not find any applications from this cluster</h4>
+{{/if}}
{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
index dfd6fb5..1551957 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
@@ -18,7 +18,7 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarn-node-app" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{node-menu-panel path="yarn-node-app" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10 container-fluid">
<div class="panel panel-default">
<div class="panel-heading"><b>Application Information</b></div>
@@ -48,7 +48,7 @@
<tbody>
{{#each model.nodeApp.containers as |container|}}
<tr>
- <td><a href="yarn-node-container/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container}}">{{container}}</a></td>
+ <td><a href="#/yarn-node-container/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container}}">{{container}}</a></td>
</tr>
{{/each}}
</tbody>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
index d897afc..42de7eb 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
@@ -18,7 +18,8 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarn-node-apps" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{node-menu-panel path="yarn-node-apps" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{#if model.apps}}
<div class="col-md-10 container-fluid">
<table id="node-apps-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
@@ -31,21 +32,20 @@
<tbody>
{{#if model.apps}}
{{#each model.apps as |app|}}
- {{#if app.isDummyApp}}
- <tr><td colspan="3" align="center">No apps found on this node</td></tr>
- {{else}}
<tr>
- <td><a href="yarn-node-app/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{app.appId}}">{{app.appId}}</a></td>
+ <td><a href="#/yarn-node-app/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{app.appId}}">{{app.appId}}</a></td>
<td><span class={{app.appStateStyle}}>{{app.state}}</span></td>
<td>{{app.user}}</td>
</tr>
- {{/if}}
{{/each}}
{{/if}}
</tbody>
</table>
{{simple-table table-id="node-apps-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
</div>
+ {{else}}
+ <h4 align = "center">No apps found on this node</h4>
+ {{/if}}
</div>
</div>
{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
index 8ddbae5..4104eec 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
@@ -18,7 +18,7 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarn-node-container" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{node-menu-panel path="yarn-node-container" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10 container-fluid">
<div class="panel panel-default">
<div class="panel-heading"><b>Container Information</b></div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
index 65a67a8..3ebcc6f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
@@ -18,7 +18,8 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarn-node-containers" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{node-menu-panel path="yarn-node-containers" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{#if model.containers}}
<div class="col-md-10 container-fluid">
<table id="node-containers-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
@@ -32,11 +33,8 @@
<tbody>
{{#if model.containers}}
{{#each model.containers as |container|}}
- {{#if container.isDummyContainer}}
- <tr><td colspan="4" align="center">No containers found on this node</td></tr>
- {{else}}
<tr>
- <td><a href="yarn-node-container/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container.containerId}}">{{container.containerId}}</a></td>
+ <td><a href="#/yarn-node-container/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container.containerId}}">{{container.containerId}}</a></td>
<td><span class={{container.containerStateStyle}}>{{container.state}}</span></td>
<td>{{container.user}}</td>
<td>
@@ -46,13 +44,15 @@
logFiles=container.containerLogFiles}}
</td>
</tr>
- {{/if}}
{{/each}}
{{/if}}
</tbody>
</table>
{{simple-table table-id="node-containers-table" bFilter=true colsOrder="0,desc" colTypes="natural" colTargets="0"}}
</div>
+ {{else}}
+ <h4 align = "center">No containers found on this node</h4>
+ {{/if}}
</div>
</div>
{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
index d92a70a..d6f30ec 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
@@ -18,7 +18,7 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarn-node" nodeId=model.rmNode.id nodeAddr=model.node.id}}
+ {{node-menu-panel path="yarn-node" nodeId=model.rmNode.id nodeAddr=model.node.id}}
<div class="col-md-10 container-fluid">
<div class="panel panel-default">
<div class="panel-heading">Node Information</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
index bf2a098..3c78498 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-nodes.hbs
@@ -16,6 +16,7 @@
limitations under the License.
--}}
+{{#if model}}
<table id="nodes-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
<tr>
@@ -35,11 +36,7 @@
</tr>
</thead>
<tbody>
- {{#if model}}
{{#each model as |node|}}
- {{#if node.isDummyNode}}
- <tr><td colspan="13" align="center">No nodes found on this cluster</td></tr>
- {{else}}
<tr>
<td>{{node.nodeLabelsAsString}}</td>
<td>{{node.rack}}</td>
@@ -55,11 +52,12 @@
<td>{{node.availableVirtualCores}}</td>
<td>{{node.version}}</td>
</tr>
- {{/if}}
{{/each}}
- {{/if}}
</tbody>
</table>
{{simple-table table-id="nodes-table" bFilter=true}}
+{{else}}
+ <h4 align = "center">No nodes found on this cluster</h4>
+{{/if}}
{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
index 51a4fb4..8ce4ffa 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
@@ -58,8 +58,12 @@
<div class="row">
<div class="col-md-12 container-fluid">
- {{app-table table-id="apps-table" arr=model.apps}}
- {{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
+ {{#if model.apps}}
+ {{app-table table-id="apps-table" arr=model.apps}}
+ {{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
+ {{else}}
+ <h4 align = "center">Could not find any applications from this cluster</h4>
+ {{/if}}
</div>
</div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
index 118e0ba..3c478be 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/environment.js
@@ -25,7 +25,7 @@ module.exports = function(environment) {
modulePrefix: 'yarn-ui',
environment: environment,
baseURL: '/',
- locationType: 'auto',
+ locationType: 'hash',
EmberENV: {
FEATURES: {
// Here you can enable experimental features on an ember canary build
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
index 40febda..417eb98 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
@@ -22,6 +22,7 @@
"broccoli-asset-rev": "2.4.2",
"broccoli-funnel": "1.0.1",
"ember-bootstrap": "0.5.1",
+ "ember-array-contains-helper": "1.0.2",
"ember-cli": "1.13.13",
"ember-cli-app-version": "1.0.0",
"ember-cli-babel": "5.1.6",
@@ -42,6 +43,7 @@
"ember-export-application-global": "1.0.5",
"ember-resolver": "2.0.3",
"ember-spin-spinner": "0.2.3",
+ "ember-truth-helpers": "1.2.0",
"select2": "4.0.0"
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cd7cf2cb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/helpers/node-name-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/helpers/node-name-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/helpers/node-name-test.js
new file mode 100644
index 0000000..8ff5eb6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/helpers/node-name-test.js
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ */
+
+import { nodeName } from '../../../helpers/node-name';
+import { module, test } from 'qunit';
+
+module('Unit | Helper | node name');
+
+// Replace this with your real tests.
+test('it works', function(assert) {
+ let result = nodeName(42);
+ assert.ok(result);
+});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[11/50] [abbrv] hadoop git commit: YARN-5321. [YARN-3368] Add
resource usage for application by node managers (Wangda Tan via Sunil G)
YARN-5320. [YARN-3368] Add resource usage by applications and queues to
cluster overview page (Wangda Tan via Sunil G)
Posted by su...@apache.org.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
index 8ce4ffa..aae4177 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queue.hbs
@@ -16,55 +16,95 @@
* limitations under the License.
}}
-<div class="container-fluid">
- {{queue-navigator model=model.queues selected=model.selected}}
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
</div>
-<div class="row">
- <div class="col-lg-3 container-fluid">
- {{queue-configuration-table queue=model.selectedQueue}}
- </div>
+<div class="col-md-12 container-fluid">
+ <div class="row">
- <div class="col-lg-3 container-fluid" id="capacity-bar-chart">
- {{bar-chart data=model.selectedQueue.capacitiesBarChartData
- title="Queue Capacities"
- parentId="capacity-bar-chart"
- textWidth=150
- ratio=0.5
- maxHeight=350}}
- </div>
+ <div class="col-md-2 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>Application</h4>
+ </div>
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
+ <ul class="nav nav-pills nav-stacked collapse in">
+ {{#link-to 'yarn-queue' tagName="li"}}
+ {{#link-to 'yarn-queue' model.selected}}Information
+ {{/link-to}}
+ {{/link-to}}
+ {{#link-to 'yarn-queue-apps' tagName="li"}}
+ {{#link-to 'yarn-queue-apps' model.selected}}Applications List
+ {{/link-to}}
+ {{/link-to}}
+ </ul>
+ </ul>
+ </div>
+ </div>
+ </div>
-{{#if model.selectedQueue.hasUserUsages}}
- <div class="col-lg-3 container-fluid" id="userusage-donut-chart">
- {{donut-chart data=model.selectedQueue.userUsagesDonutChartData
- title="User Usages"
- showLabels=true
- parentId="userusage-donut-chart"
- maxHeight=350}}
- </div>
-{{/if}}
+ <div class="col-md-10 container-fluid">
+ <!-- timeline view of children -->
+ <div class="row">
- <div class="col-lg-3 container-fluid" id="numapplications-donut-chart">
- {{donut-chart data=model.selectedQueue.numOfApplicationsDonutChartData
- title="Running Apps"
- showLabels=true
- parentId="numapplications-donut-chart"
- ratio=0.5
- maxHeight=350}}
- </div>
-</div>
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Queue Information
+ </div>
+ {{queue-configuration-table queue=model.selectedQueue}}
+ </div>
+ </div>
-<hr>
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Queue Capacities
+ </div>
+ <div class="container-fluid" id="capacity-bar-chart">
+ <br/>
+ {{bar-chart data=model.selectedQueue.capacitiesBarChartData
+ title=""
+ parentId="capacity-bar-chart"
+ textWidth=170
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
+
+ {{#if model.selectedQueue.hasUserUsages}}
+ <div class="col-lg-4 container-fluid" id="userusage-donut-chart">
+ {{donut-chart data=model.selectedQueue.userUsagesDonutChartData
+ title="User Usages"
+ showLabels=true
+ parentId="userusage-donut-chart"
+ type="memory"
+ ratio=0.6
+ maxHeight=350}}
+ </div>
+ {{/if}}
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Running Apps
+ </div>
+ <div class="container-fluid" id="numapplications-donut-chart">
+ {{donut-chart data=model.selectedQueue.numOfApplicationsDonutChartData
+ showLabels=true
+ parentId="numapplications-donut-chart"
+ ratio=0.6
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </div>
-<div class="row">
- <div class="col-md-12 container-fluid">
- {{#if model.apps}}
- {{app-table table-id="apps-table" arr=model.apps}}
- {{simple-table table-id="apps-table" bFilter=true colTypes="elapsed-time" colTargets="7"}}
- {{else}}
- <h4 align = "center">Could not find any applications from this cluster</h4>
- {{/if}}
</div>
</div>
-
-{{outlet}}
\ No newline at end of file
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queues.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queues.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queues.hbs
new file mode 100644
index 0000000..e27341b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-queues.hbs
@@ -0,0 +1,72 @@
+{{!
+ * 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.
+}}
+
+<div class="col-md-12 container-fluid">
+ {{em-breadcrumbs items=breadcrumbs}}
+</div>
+
+<div class="container-fluid">
+ {{queue-navigator model=model.queues selected=model.selected}}
+
+ <div class="row">
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Queue Information
+ </div>
+ {{queue-configuration-table queue=model.selectedQueue}}
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Queue Capacities
+ </div>
+ <div class="container-fluid" id="capacity-bar-chart">
+ <br/>
+ {{bar-chart data=model.selectedQueue.capacitiesBarChartData
+ title=""
+ parentId="capacity-bar-chart"
+ textWidth=150
+ ratio=0.55
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-lg-4 container-fluid">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ Running Apps
+ </div>
+ <div class="container-fluid" id="numapplications-donut-chart">
+ {{donut-chart data=model.selectedQueue.numOfApplicationsDonutChartData
+ showLabels=true
+ parentId="numapplications-donut-chart"
+ ratio=0.6
+ maxHeight=350}}
+ </div>
+ </div>
+ </div>
+
+ </div>
+</div>
+
+{{outlet}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/color-utils.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/color-utils.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/color-utils.js
new file mode 100644
index 0000000..b96ec16
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/color-utils.js
@@ -0,0 +1,67 @@
+/**
+ * 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.
+ */
+
+import Constants from 'yarn-ui/constants';
+
+export default {
+ preDefinedColors : ["#1f77b4", "#aec7e8", "#ffbb78",
+ "#98df8a", "#ff9896", "#9467bd", "#c5b0d5", "#8c564b",
+ "#c49c94", "#e377c2", "#f7b6d2", "#c7c7c7", "#bcbd22",
+ "#dbdb8d", "#17becf", "#9edae5"],
+
+ colorMap: {
+ "warn": "#ff7f0e",
+ "good": "#2ca02c",
+ "error": "#d62728",
+ "others": "#7f7f7f",
+ },
+
+ getColors: function(nColors, colorsTarget, reverse = false) {
+ var colors = [];
+ for (var i = 0; i < nColors; i++) {
+ colors.push(undefined);
+ }
+
+ var startIdx = 0;
+
+ if (reverse) {
+ startIdx = Math.max(nColors - colorsTarget.length, 0);
+ }
+
+ for (var i = 0; i < colorsTarget.length; i++) {
+ if (i + startIdx < nColors) {
+ colors[i + startIdx] = this.getColorByTarget(colorsTarget[i]);
+ }
+ }
+
+ var idx = 0;
+ for (var i = 0; i < nColors; i++) {
+ if (!colors[i]) {
+ colors[i] = this.preDefinedColors[i % this.preDefinedColors.length];
+ idx ++;
+ }
+ }
+
+ console.log(colors);
+ return colors;
+ },
+
+ getColorByTarget: function(target) {
+ return this.colorMap[target];
+ }
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
index fd8f491..6fd9d30 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
@@ -106,4 +106,21 @@ export default {
return [splits[0], splits[1], fileName];
}
},
+ memoryToSimpliedUnit: function(mb) {
+ var unit = "MB"
+ var value = mb;
+ if (value / 1024 >= 0.9) {
+ value = value / 1024;
+ unit = "GB";
+ }
+ if (value / 1024 >= 0.9) {
+ value = value / 1024;
+ unit = "TB";
+ }
+ if (value / 1024 >= 0.9) {
+ value = value / 1024;
+ unit = "PB";
+ }
+ return value.toFixed(1) + " " + unit;
+ }
};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/href-address-utils.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/href-address-utils.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/href-address-utils.js
new file mode 100644
index 0000000..fd940a2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/href-address-utils.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Constants from 'yarn-ui/constants';
+
+export default {
+ getApplicationLink: function(applicationId) {
+ return "#/yarn-app/" + applicationId;
+ },
+
+ getQueueLink: function(queueName) {
+ return '#/yarn-queue/' + queueName;
+ }
+};
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/mock.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/mock.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/mock.js
new file mode 100644
index 0000000..62eebc1
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/mock.js
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+
+export default {
+ initMockNodesData: function(ref) {
+ var data = [];
+ for (var i = 0; i < 3; i++) {
+ for (var j = 0; j < 38; j++) {
+ var node = ref.get('targetObject.store').createRecord('YarnRmNode', {
+ rack: "/rack-" + i,
+ nodeHostName: "hadoop-" + ["centos6", "ubuntu7", "win"][i % 3] + "-" + ["web", "etl", "dm"][j % 3] + "-" + j,
+ usedMemoryMB: Math.abs(Math.random() * 10000),
+ availMemoryMB: Math.abs(Math.random() * 10000)
+ });
+ data.push(node);
+ }
+ }
+
+ ref.set("model", data);
+ },
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
index b23dbbc..fe5f289 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json
@@ -18,6 +18,7 @@
"datatables": "~1.10.8",
"spin.js": "~2.3.2",
"momentjs": "~2.10.6",
- "select2": "4.0.0"
+ "select2": "4.0.0",
+ "snippet-ss": "~1.11.0"
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
index 417eb98..baa473a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/package.json
@@ -21,6 +21,7 @@
"devDependencies": {
"broccoli-asset-rev": "2.4.2",
"broccoli-funnel": "1.0.1",
+ "em-table": "0.1.6",
"ember-bootstrap": "0.5.1",
"ember-array-contains-helper": "1.0.2",
"ember-cli": "1.13.13",
@@ -45,5 +46,8 @@
"ember-spin-spinner": "0.2.3",
"ember-truth-helpers": "1.2.0",
"select2": "4.0.0"
+ },
+ "dependencies": {
+ "em-helpers": "^0.5.13"
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempt-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempt-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempt-test.js
new file mode 100644
index 0000000..0d6c16c
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempt-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-app-attempt', 'Unit | Controller | yarn app attempt', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempts-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempts-test.js
new file mode 100644
index 0000000..3894db2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempts-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-app-attempts', 'Unit | Controller | yarn app attempts', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-test.js
new file mode 100644
index 0000000..1cc95c5
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-app', 'Unit | Controller | yarn app', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-apps-test.js
new file mode 100644
index 0000000..40c5d44
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-apps-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-node-apps', 'Unit | Controller | yarn node apps', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-containers-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-containers-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-containers-test.js
new file mode 100644
index 0000000..929adcd
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-containers-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-node-containers', 'Unit | Controller | yarn node containers', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-test.js
new file mode 100644
index 0000000..59f443f
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-node-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-node', 'Unit | Controller | yarn node', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-nodes-heatmap-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-nodes-heatmap-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-nodes-heatmap-test.js
new file mode 100644
index 0000000..4833302
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-nodes-heatmap-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-nodes-heatmap', 'Unit | Controller | yarn nodes heatmap', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-nodes-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-nodes-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-nodes-test.js
new file mode 100644
index 0000000..ccd0bff
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-nodes-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-nodes', 'Unit | Controller | yarn nodes', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queue-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queue-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queue-apps-test.js
new file mode 100644
index 0000000..adf2e07
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queue-apps-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-queue-apps', 'Unit | Controller | yarn queue apps', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queues-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queues-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queues-test.js
index 39cf493..0978208 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queues-test.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-queues-test.js
@@ -18,13 +18,13 @@
import { moduleFor, test } from 'ember-qunit';
-moduleFor('controller:yarn-queues', {
+moduleFor('controller:yarn-queues', 'Unit | Controller | yarn queues', {
// Specify the other units that are required for this test.
// needs: ['controller:foo']
});
// Replace this with your real tests.
test('it exists', function(assert) {
- var controller = this.subject();
+ let controller = this.subject();
assert.ok(controller);
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-services-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-services-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-services-test.js
new file mode 100644
index 0000000..53834e2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-services-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-services', 'Unit | Controller | yarn services', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app-attempts-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app-attempts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app-attempts-test.js
new file mode 100644
index 0000000..917a159
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app-attempts-test.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-app-attempts', 'Unit | Route | yarn app attempts', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+test('it exists', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-queue-apps-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-queue-apps-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-queue-apps-test.js
new file mode 100644
index 0000000..6738ea0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-queue-apps-test.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-queue-apps', 'Unit | Route | yarn queue apps', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+test('it exists', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52661fef/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-queues-test.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-queues-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-queues-test.js
new file mode 100644
index 0000000..5153435
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-queues-test.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-queues', 'Unit | Route | yarn queues', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+test('it exists', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[27/50] [abbrv] hadoop git commit: YARN-5019. [YARN-3368] Change urls
in new YARN ui from camel casing to hyphens. (Sunil G via wangda)
Posted by su...@apache.org.
YARN-5019. [YARN-3368] Change urls in new YARN ui from camel casing to hyphens. (Sunil G via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/1c609da8
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/1c609da8
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/1c609da8
Branch: refs/heads/YARN-3368
Commit: 1c609da889def089b50c29308f0b1d2d07f54646
Parents: 47d3101
Author: Wangda Tan <wa...@apache.org>
Authored: Mon May 9 11:29:59 2016 -0700
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../main/webapp/app/components/tree-selector.js | 4 +--
.../main/webapp/app/controllers/application.js | 16 +++++-----
.../main/webapp/app/helpers/log-files-comma.js | 2 +-
.../src/main/webapp/app/helpers/node-link.js | 2 +-
.../src/main/webapp/app/helpers/node-menu.js | 12 ++++----
.../main/webapp/app/models/yarn-app-attempt.js | 2 +-
.../src/main/webapp/app/router.js | 32 ++++++++++----------
.../src/main/webapp/app/routes/index.js | 2 +-
.../main/webapp/app/routes/yarn-app-attempt.js | 6 ++--
.../src/main/webapp/app/routes/yarn-app.js | 4 +--
.../src/main/webapp/app/routes/yarn-apps.js | 2 +-
.../webapp/app/routes/yarn-container-log.js | 2 +-
.../src/main/webapp/app/routes/yarn-node-app.js | 2 +-
.../main/webapp/app/routes/yarn-node-apps.js | 2 +-
.../webapp/app/routes/yarn-node-container.js | 2 +-
.../webapp/app/routes/yarn-node-containers.js | 2 +-
.../src/main/webapp/app/routes/yarn-node.js | 4 +--
.../src/main/webapp/app/routes/yarn-nodes.js | 2 +-
.../src/main/webapp/app/routes/yarn-queue.js | 6 ++--
.../main/webapp/app/routes/yarn-queues/index.js | 2 +-
.../app/routes/yarn-queues/queues-selector.js | 2 +-
.../app/templates/components/app-table.hbs | 4 +--
.../webapp/app/templates/yarn-container-log.hbs | 2 +-
.../main/webapp/app/templates/yarn-node-app.hbs | 4 +--
.../webapp/app/templates/yarn-node-apps.hbs | 4 +--
.../app/templates/yarn-node-container.hbs | 2 +-
.../app/templates/yarn-node-containers.hbs | 4 +--
.../src/main/webapp/app/templates/yarn-node.hbs | 2 +-
28 files changed, 66 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
index f7ec020..698c253 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js
@@ -126,7 +126,7 @@ export default Ember.Component.extend({
.attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
.on("click", function(d,i){
if (d.queueData.get("name") != this.get("selected")) {
- document.location.href = "yarnQueue/" + d.queueData.get("name");
+ document.location.href = "yarn-queue/" + d.queueData.get("name");
}
}.bind(this));
// .on("click", click);
@@ -176,7 +176,7 @@ export default Ember.Component.extend({
.attr("r", 20)
.attr("href",
function(d) {
- return "yarnQueues/" + d.queueData.get("name");
+ return "yarn-queues/" + d.queueData.get("name");
})
.style("stroke", function(d) {
if (d.queueData.get("name") == this.get("selected")) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/application.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/application.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/application.js
index 3c68365..2effb13 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/application.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/application.js
@@ -29,25 +29,25 @@ export default Ember.Controller.extend({
outputMainMenu: function(){
var path = this.get('currentPath');
var html = '<li';
- if (path == 'yarnQueue') {
+ if (path == 'yarn-queue') {
html = html + ' class="active"';
}
- html = html + '><a href="yarnQueue/root">Queues<span class="sr-only">' +
+ html = html + '><a href="yarn-queue/root">Queues<span class="sr-only">' +
'(current)</span></a></li><li';
- if (path.lastIndexOf('yarnApp', 0) == 0) {
+ if (path.lastIndexOf('yarn-app', 0) == 0) {
html = html + ' class="active"';
}
- html = html + '><a href="yarnApps">Applications<span class="sr-only">' +
+ html = html + '><a href="yarn-apps">Applications<span class="sr-only">' +
'(current)</span></a></li><li';
- if (path == 'clusterOverview') {
+ if (path == 'cluster-overview') {
html = html + ' class="active"';
}
- html = html + '><a href="clusterOverview">Cluster Overview<span class=' +
+ html = html + '><a href="cluster-overview">Cluster Overview<span class=' +
'"sr-only">(current)</span></a></li><li';
- if (path.lastIndexOf('yarnNode', 0) == 0) {
+ if (path.lastIndexOf('yarn-node', 0) == 0) {
html = html + ' class="active"';
}
- html = html + '><a href="yarnNodes">Nodes<span class="sr-only">' +
+ html = html + '><a href="yarn-nodes">Nodes<span class="sr-only">' +
'(current)</span></a></li>';
return Ember.String.htmlSafe(html);
}.property('currentPath')
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
index 8c29b34..b6b57ec 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/log-files-comma.js
@@ -36,7 +36,7 @@ export default Ember.Helper.helper(function(params,hash) {
var html = '<td>';
var logFilesCommaSeparated = "";
for (var i = 0; i < logFilesLen; i++) {
- html = html + '<a href="yarnContainerLog/' + nodeId + '/' +
+ html = html + '<a href="yarn-container-log/' + nodeId + '/' +
nodeAddr + '/' + containerId + '/' + logFiles[i] + '">' + logFiles[i] +
'</a>';
if (i != logFilesLen - 1) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
index 99d975b..331f082 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-link.js
@@ -29,7 +29,7 @@ export default Ember.Helper.helper(function(params,hash) {
if (nodeState == "SHUTDOWN" || nodeState == "LOST") {
html = html + nodeHTTPAddress;
} else {
- html = html + '<a href="yarnNode/' + nodeId + "/" + nodeHTTPAddress + '">' +
+ html = html + '<a href="yarn-node/' + nodeId + "/" + nodeHTTPAddress + '">' +
nodeHTTPAddress + '</a>';
}
html = html + '</td>';
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
index 589111f..2538d7d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/node-menu.js
@@ -47,20 +47,20 @@ export default Ember.Helper.helper(function(params,hash) {
'<div class="panel-heading"><h4>Node Manager<br>(' + normalizedNodeId + ')</h4></div>'+
'<div class="panel-body"><ul class="nav nav-pills nav-stacked" id="stacked-menu">' +
'<ul class="nav nav-pills nav-stacked collapse in"><li';
- if (hash.path == 'yarnNode') {
+ if (hash.path == 'yarn-node') {
html = html + ' class="active"';
}
- html = html + '><a href="yarnNode/' + hash.nodeId + '/' + hash.nodeAddr +
+ html = html + '><a href="yarn-node/' + hash.nodeId + '/' + hash.nodeAddr +
'">Node Information</a></li><li';
- if (hash.path == 'yarnNodeApps') {
+ if (hash.path == 'yarn-node-apps') {
html = html + ' class="active"';
}
- html = html + '><a href="yarnNodeApps/' + hash.nodeId + '/' + hash.nodeAddr +
+ html = html + '><a href="yarn-node-apps/' + hash.nodeId + '/' + hash.nodeAddr +
'">List of Applications</a></li><li';
- if (hash.path == 'yarnNodeContainers') {
+ if (hash.path == 'yarn-node-containers') {
html = html + ' class="active"';
}
- html = html + '><a href="yarnNodeContainers/' +hash.nodeId + '/' + hash.nodeAddr +
+ html = html + '><a href="yarn-node-containers/' +hash.nodeId + '/' + hash.nodeAddr +
'">List of Containers</a></li></ul></ul></div>';
return Ember.String.htmlSafe(html);
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
index b699bb3..8079907 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app-attempt.js
@@ -57,6 +57,6 @@ export default DS.Model.extend({
}.property(),
link: function() {
- return "/yarnAppAttempt/" + this.get("id");
+ return "/yarn-app-attempt/" + this.get("id");
}.property(),
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
index 67e9d2c..8f7ce5f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
@@ -24,22 +24,22 @@ var Router = Ember.Router.extend({
});
Router.map(function() {
- this.route('yarnApps');
- this.route('yarnNodes');
- this.route('yarnNode', { path: '/yarnNode/:node_id/:node_addr' });
- this.route('yarnNodeApps', { path: '/yarnNodeApps/:node_id/:node_addr' });
- this.route('yarnNodeApp',
- { path: '/yarnNodeApp/:node_id/:node_addr/:app_id' });
- this.route('yarnNodeContainers',
- { path: '/yarnNodeContainers/:node_id/:node_addr' });
- this.route('yarnNodeContainer',
- { path: '/yarnNodeContainer/:node_id/:node_addr/:container_id' });
- this.route('yarnContainerLog', { path:
- '/yarnContainerLog/:node_id/:node_addr/:container_id/:filename' });
- this.route('yarnQueue', { path: '/yarnQueue/:queue_name' });
- this.route('clusterOverview');
- this.route('yarnApp', { path: '/yarnApp/:app_id' });
- this.route('yarnAppAttempt', { path: '/yarnAppAttempt/:app_attempt_id'});
+ this.route('yarn-apps');
+ this.route('yarn-nodes');
+ this.route('yarn-node', { path: '/yarn-node/:node_id/:node_addr' });
+ this.route('yarn-node-apps', { path: '/yarn-node-apps/:node_id/:node_addr' });
+ this.route('yarn-node-app',
+ { path: '/yarn-node-app/:node_id/:node_addr/:app_id' });
+ this.route('yarn-node-containers',
+ { path: '/yarn-node-containers/:node_id/:node_addr' });
+ this.route('yarn-node-container',
+ { path: '/yarn-node-container/:node_id/:node_addr/:container_id' });
+ this.route('yarn-container-log', { path:
+ '/yarn-container-log/:node_id/:node_addr/:container_id/:filename' });
+ this.route('yarn-queue', { path: '/yarn-queue/:queue_name' });
+ this.route('cluster-overview');
+ this.route('yarn-app', { path: '/yarn-app/:app_id' });
+ this.route('yarn-app-attempt', { path: '/yarn-app-attempt/:app_attempt_id'});
this.route('error');
this.route('notfound', { path: '*:' });
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/index.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/index.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/index.js
index b228ff4..af26670 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/index.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/index.js
@@ -23,7 +23,7 @@ export default Ember.Route.extend({
* Redirect root URL to cluster overview page.
*/
beforeModel: function() {
- this.replaceWith('clusterOverview');
+ this.replaceWith('cluster-overview');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
index 72a001c..a65118d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempt.js
@@ -21,15 +21,15 @@ import Ember from 'ember';
export default Ember.Route.extend({
model(param) {
return Ember.RSVP.hash({
- attempt: this.store.findRecord('yarnAppAttempt', param.app_attempt_id),
+ attempt: this.store.findRecord('yarn-app-attempt', param.app_attempt_id),
- rmContainers: this.store.query('yarnContainer',
+ rmContainers: this.store.query('yarn-container',
{
app_attempt_id: param.app_attempt_id,
is_rm: true
}),
- tsContainers: this.store.query('yarnContainer',
+ tsContainers: this.store.query('yarn-container',
{
app_attempt_id: param.app_attempt_id,
is_rm: false
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
index fcdfad8..f5384b8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
@@ -21,8 +21,8 @@ import Ember from 'ember';
export default Ember.Route.extend({
model(param) {
return Ember.RSVP.hash({
- app: this.store.find('yarnApp', param.app_id),
- attempts: this.store.query('yarnAppAttempt', { appId: param.app_id})
+ app: this.store.find('yarn-app', param.app_id),
+ attempts: this.store.query('yarn-app-attempt', { appId: param.app_id})
});
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
index 083f62d..ff49403 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps.js
@@ -20,7 +20,7 @@ import Ember from 'ember';
export default Ember.Route.extend({
model() {
- var apps = this.store.findAll('yarnApp');
+ var apps = this.store.findAll('yarn-app');
return apps;
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
index c324025..e2c9922 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-container-log.js
@@ -24,7 +24,7 @@ export default Ember.Route.extend({
var id = param.node_addr + Constants.PARAM_SEPARATOR + param.container_id +
Constants.PARAM_SEPARATOR + param.filename;
return Ember.RSVP.hash({
- containerLog: this.store.findRecord('yarnContainerLog', id),
+ containerLog: this.store.findRecord('yarn-container-log', id),
nodeInfo: { id: param.node_id, addr: param.node_addr }
}).then(function(hash) {
// Just return as its success.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
index 63b1f2a..ed3058a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-app.js
@@ -21,7 +21,7 @@ import Ember from 'ember';
export default Ember.Route.extend({
model(param) {
return Ember.RSVP.hash({
- nodeApp: this.store.queryRecord('yarnNodeApp',
+ nodeApp: this.store.queryRecord('yarn-node-app',
{ nodeAddr : param.node_addr, appId: param.app_id }),
nodeInfo: { id: param.node_id, addr: param.node_addr }
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
index ffb5b7b..4377a0d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-apps.js
@@ -22,7 +22,7 @@ export default Ember.Route.extend({
model(param) {
// Get all apps running on a specific node. Node is contacted by using node_addr.
return Ember.RSVP.hash({
- apps: this.store.query('yarnNodeApp', { nodeAddr: param.node_addr }),
+ apps: this.store.query('yarn-node-app', { nodeAddr: param.node_addr }),
nodeInfo: { id: param.node_id, addr: param.node_addr }
});
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
index 2022662..4ee3c66 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-container.js
@@ -22,7 +22,7 @@ export default Ember.Route.extend({
model(param) {
// Get a specific container running on a specific node.
return Ember.RSVP.hash({
- nodeContainer: this.store.queryRecord('yarnNodeContainer',
+ nodeContainer: this.store.queryRecord('yarn-node-container',
{ nodeHttpAddr: param.node_addr, containerId: param.container_id }),
nodeInfo: { id: param.node_id, addr: param.node_addr }
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
index 9a69729..283296e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node-containers.js
@@ -21,7 +21,7 @@ export default Ember.Route.extend({
model(param) {
// Get all containers running on specific node.
return Ember.RSVP.hash({
- containers: this.store.query('yarnNodeContainer', { nodeHttpAddr: param.node_addr }),
+ containers: this.store.query('yarn-node-container', { nodeHttpAddr: param.node_addr }),
nodeInfo: { id: param.node_id, addr: param.node_addr }
});
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
index 7c58b94..6e57388 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-node.js
@@ -22,8 +22,8 @@ export default Ember.Route.extend({
model(param) {
// Fetches data from both NM and RM. RM is queried to get node usage info.
return Ember.RSVP.hash({
- node: this.store.findRecord('yarnNode', param.node_addr),
- rmNode: this.store.findRecord('yarnRmNode', param.node_id)
+ node: this.store.findRecord('yarn-node', param.node_addr),
+ rmNode: this.store.findRecord('yarn-rm-node', param.node_id)
});
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
index f33eef8..5c46630 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-nodes.js
@@ -20,6 +20,6 @@ import Ember from 'ember';
export default Ember.Route.extend({
model() {
- return this.store.findAll('yarnRmNode');
+ return this.store.findAll('yarn-rm-node');
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
index 89858bf..06ceafb 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queue.js
@@ -22,15 +22,15 @@ export default Ember.Route.extend({
model(param) {
return Ember.RSVP.hash({
selected : param.queue_name,
- queues: this.store.findAll('yarnQueue'),
+ queues: this.store.findAll('yarn-queue'),
selectedQueue : undefined,
apps: undefined, // apps of selected queue
});
},
afterModel(model) {
- model.selectedQueue = this.store.peekRecord('yarnQueue', model.selected);
- model.apps = this.store.findAll('yarnApp');
+ model.selectedQueue = this.store.peekRecord('yarn-queue', model.selected);
+ model.apps = this.store.findAll('yarn-app');
model.apps.forEach(function(o) {
console.log(o);
})
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/index.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/index.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/index.js
index 7da6f6d..4ab5716 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/index.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/index.js
@@ -18,6 +18,6 @@
export default Ember.Route.extend({
beforeModel() {
- this.transitionTo('yarnQueues.root');
+ this.transitionTo('yarn-queues.root');
}
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/queues-selector.js
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/queues-selector.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/queues-selector.js
index 3686c83..5d14c6f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/queues-selector.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-queues/queues-selector.js
@@ -20,6 +20,6 @@ import Ember from 'ember';
export default Ember.Route.extend({
model() {
- return this.store.findAll('yarnQueue');
+ return this.store.findAll('yarn-queue');
},
});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
index fb0fb6f..6e8badc 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
@@ -36,7 +36,7 @@
{{#if arr}}
{{#each arr as |app|}}
<tr>
- <td><a href="yarnApp/{{app.id}}">{{app.id}}</a></td>
+ <td><a href="yarn-app/{{app.id}}">{{app.id}}</a></td>
<td>{{app.appName}}</td>
<td>{{app.user}}</td>
<td>{{app.queue}}</td>
@@ -57,7 +57,7 @@
{{/each}}
{{else}}
<tr>
- <td><a href="yarnApp/{{app.id}}">{{app.id}}</a></td>
+ <td><a href="yarn-app/{{app.id}}">{{app.id}}</a></td>
<td>{{app.appName}}</td>
<td>{{app.user}}</td>
<td>{{app.queue}}</td>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
index 9cc3b0f..e9c3fed 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-container-log.hbs
@@ -17,7 +17,7 @@
--}}
<div class="col-md-12 container-fluid">
- {{node-menu path="yarnContainerLog" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{node-menu path="yarn-container-log" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10">
<div class="panel panel-default">
<div class="panel-heading">
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
index 4da64b8..dfd6fb5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-app.hbs
@@ -18,7 +18,7 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarnNodeApp" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{node-menu path="yarn-node-app" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10 container-fluid">
<div class="panel panel-default">
<div class="panel-heading"><b>Application Information</b></div>
@@ -48,7 +48,7 @@
<tbody>
{{#each model.nodeApp.containers as |container|}}
<tr>
- <td><a href="yarnNodeContainer/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container}}">{{container}}</a></td>
+ <td><a href="yarn-node-container/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container}}">{{container}}</a></td>
</tr>
{{/each}}
</tbody>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
index c195397..d897afc 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-apps.hbs
@@ -18,7 +18,7 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarnNodeApps" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{node-menu path="yarn-node-apps" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10 container-fluid">
<table id="node-apps-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
@@ -35,7 +35,7 @@
<tr><td colspan="3" align="center">No apps found on this node</td></tr>
{{else}}
<tr>
- <td><a href="yarnNodeApp/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{app.appId}}">{{app.appId}}</a></td>
+ <td><a href="yarn-node-app/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{app.appId}}">{{app.appId}}</a></td>
<td><span class={{app.appStateStyle}}>{{app.state}}</span></td>
<td>{{app.user}}</td>
</tr>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
index fbbb2fc..8ddbae5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-container.hbs
@@ -18,7 +18,7 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarnNodeContainer" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{node-menu path="yarn-node-container" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10 container-fluid">
<div class="panel panel-default">
<div class="panel-heading"><b>Container Information</b></div>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
index ca80ccd..65a67a8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node-containers.hbs
@@ -18,7 +18,7 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarnNodeContainers" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
+ {{node-menu path="yarn-node-containers" nodeAddr=model.nodeInfo.addr nodeId=model.nodeInfo.id}}
<div class="col-md-10 container-fluid">
<table id="node-containers-table" class="display table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
@@ -36,7 +36,7 @@
<tr><td colspan="4" align="center">No containers found on this node</td></tr>
{{else}}
<tr>
- <td><a href="yarnNodeContainer/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container.containerId}}">{{container.containerId}}</a></td>
+ <td><a href="yarn-node-container/{{model.nodeInfo.id}}/{{model.nodeInfo.addr}}/{{container.containerId}}">{{container.containerId}}</a></td>
<td><span class={{container.containerStateStyle}}>{{container.state}}</span></td>
<td>{{container.user}}</td>
<td>
http://git-wip-us.apache.org/repos/asf/hadoop/blob/1c609da8/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
index a036076..d92a70a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-node.hbs
@@ -18,7 +18,7 @@
<div class="col-md-12 container-fluid">
<div class="row">
- {{node-menu path="yarnNode" nodeId=model.rmNode.id nodeAddr=model.node.id}}
+ {{node-menu path="yarn-node" nodeId=model.rmNode.id nodeAddr=model.node.id}}
<div class="col-md-10 container-fluid">
<div class="panel panel-default">
<div class="panel-heading">Node Information</div>
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[30/50] [abbrv] hadoop git commit: YARN-5161. [YARN-3368] Add Apache
Hadoop logo in YarnUI home page. (Kai Sasaki via Sunil G)
Posted by su...@apache.org.
YARN-5161. [YARN-3368] Add Apache Hadoop logo in YarnUI home page. (Kai Sasaki via Sunil G)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/52446f1c
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/52446f1c
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/52446f1c
Branch: refs/heads/YARN-3368
Commit: 52446f1c0c7ea20144d8d7dc8727ff346c75de8e
Parents: 94dc265
Author: Sunil <su...@apache.org>
Authored: Mon Jul 11 14:31:25 2016 +0530
Committer: sunilg <su...@apache.org>
Committed: Fri Oct 28 20:02:27 2016 +0530
----------------------------------------------------------------------
.../src/main/webapp/app/styles/app.css | 11 +++++++++++
.../src/main/webapp/app/templates/application.hbs | 12 +++++++-----
.../webapp/public/assets/images/hadoop_logo.png | Bin 0 -> 26495 bytes
3 files changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52446f1c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
index bcb6aab..e2d09dc 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
@@ -157,3 +157,14 @@ table.dataTable thead .sorting_desc_disabled {
stroke: #ccc;
stroke-width: 2px;
}
+
+.hadoop-brand-image {
+ margin-top: -10px;
+ width: auto;
+ height: 45px;
+}
+
+li a.navigation-link.ember-view {
+ color: #2196f3;
+ font-weight: bold;
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52446f1c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
index b45ec6b..03b2c4a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
@@ -20,35 +20,37 @@
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
+ <a class="navbar-brand" href="#">
+ <img class="hadoop-brand-image" alt="Apache Hadoop" src="assets/images/hadoop_logo.png" />
+ </a>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
- <a class="navbar-brand" href="#">Apache Hadoop YARN</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
{{#link-to 'yarn-queue' 'root' tagName="li"}}
- {{#link-to 'yarn-queue' 'root'}}Queues
+ {{#link-to 'yarn-queue' 'root' class="navigation-link"}}Queues
<span class="sr-only">(current)</span>
{{/link-to}}
{{/link-to}}
{{#link-to 'yarn-apps' tagName="li"}}
- {{#link-to 'yarn-apps'}}Applications
+ {{#link-to 'yarn-apps' class="navigation-link"}}Applications
<span class="sr-only">(current)</span>
{{/link-to}}
{{/link-to}}
{{#link-to 'cluster-overview' tagName="li"}}
- {{#link-to 'cluster-overview'}}Cluster Overview
+ {{#link-to 'cluster-overview' class="navigation-link"}}Cluster Overview
<span class="sr-only">(current)</span>
{{/link-to}}
{{/link-to}}
{{#link-to 'yarn-nodes' tagName="li"}}
- {{#link-to 'yarn-nodes'}}Nodes
+ {{#link-to 'yarn-nodes' class="navigation-link"}}Nodes
<span class="sr-only">(current)</span>
{{/link-to}}
{{/link-to}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/52446f1c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/hadoop_logo.png
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/hadoop_logo.png b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/hadoop_logo.png
new file mode 100644
index 0000000..275d39e
Binary files /dev/null and b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/public/assets/images/hadoop_logo.png differ
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org