HDFS-13204. RBF: Optimize name service safe mode icon. Contributed by liuhongtong.
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.html b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.html
index 71e2132..a7da094 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.html
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.html
@@ -21,7 +21,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<link rel="stylesheet" type="text/css" href="/static/bootstrap-3.0.2/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="/static/dataTables.bootstrap.css" />
-<link rel="stylesheet" type="text/css" href="/static/hadoop.css" />
+<link rel="stylesheet" type="text/css" href="/static/rbf.css" />
<title>Router Information</title>
</head>
<body>
@@ -115,11 +115,11 @@
<script type="text/x-dust-template" id="tmpl-namenode">
<div class="page-header"><h1>Nameservice Information</h1></div>
<div>
- <ul class="dfshealth-node-legend">
- <li class="dfshealth-node-icon dfshealth-node-alive">Active</li>
- <li class="dfshealth-node-icon dfshealth-node-down-decommissioned">Standby</li>
- <li class="dfshealth-node-icon dfshealth-node-down-maintenance">Safe mode</li>
- <li class="dfshealth-node-icon dfshealth-node-down">Unavailable</li>
+ <ul class="federationhealth-namenode-legend">
+ <li class="federationhealth-namenode-icon federationhealth-namenode-active">Active</li>
+ <li class="federationhealth-namenode-icon federationhealth-namenode-standby">Standby</li>
+ <li class="federationhealth-namenode-icon federationhealth-namenode-safemode">Safe mode</li>
+ <li class="federationhealth-namenode-icon federationhealth-namenode-unavailable">Unavailable</li>
</ul>
</div>
<small>
@@ -151,14 +151,14 @@
<tbody>
{#Nameservices}
<tr>
- <td class="dfshealth-node-icon dfshealth-node-{iconState}" title="{title}"></td>
+ <td class="federationhealth-namenode-icon federationhealth-namenode-{iconState}" title="{title}"></td>
<td><a href="http://{webAddress}">{nameserviceId}</a></td>
<td><a href="http://{webAddress}">{namenodeId}</a></td>
<td>{lastHeartbeat}</td>
<td ng-value="{usedPercentage}" style="width:210px">
<div>
<div style="display:inline-block; float: left; padding-right: 10px; width:60px;">{totalSpace|fmt_bytes}</div>
- <div class="clearfix progress dfshealth-node-capacity-bar" title="Used: {used|fmt_bytes}">
+ <div class="clearfix progress federationhealth-namenode-capacity-bar" title="Used: {used|fmt_bytes}">
<div class="progress-bar {#helper_usage_bar value="{usedPercentage}"/}" style="width: {usedPercentage}%">
</div>
</div>
@@ -181,11 +181,11 @@
<div class="page-header"><h1>Namenode Information</h1></div>
<div>
- <ul class="dfshealth-node-legend">
- <li class="dfshealth-node-icon dfshealth-node-alive">Active</li>
- <li class="dfshealth-node-icon dfshealth-node-down-decommissioned">Standby</li>
- <li class="dfshealth-node-icon dfshealth-node-down-maintenance">Safe mode</li>
- <li class="dfshealth-node-icon dfshealth-node-down">Unavailable</li>
+ <ul class="federationhealth-namenode-legend">
+ <li class="federationhealth-namenode-icon federationhealth-namenode-active">Active</li>
+ <li class="federationhealth-namenode-icon federationhealth-namenode-standby">Standby</li>
+ <li class="federationhealth-namenode-icon federationhealth-namenode-safemode">Safe mode</li>
+ <li class="federationhealth-namenode-icon federationhealth-namenode-unavailable">Unavailable</li>
</ul>
</div>
<small>
@@ -217,7 +217,7 @@
<tbody>
{#Namenodes}
<tr>
- <td class="dfshealth-node-icon dfshealth-node-{iconState}" title="{title}"></td>
+ <td class="federationhealth-namenode-icon federationhealth-namenode-{iconState}" title="{title}"></td>
<td>{nameserviceId}</td>
<td>{namenodeId}</td>
<td><a href="http://{webAddress}">{webAddress}</a></td>
@@ -225,7 +225,7 @@
<td ng-value="{usedPercentage}" style="width:210px">
<div>
<div style="display:inline-block; float: left; padding-right: 10px; width:60px;">{totalSpace|fmt_bytes}</div>
- <div class="clearfix progress dfshealth-node-capacity-bar" title="Used: {used|fmt_bytes}">
+ <div class="clearfix progress federationhealth-namenode-capacity-bar" title="Used: {used|fmt_bytes}">
<div class="progress-bar {#helper_usage_bar value="{usedPercentage}"/}" style="width: {usedPercentage}%">
</div>
</div>
@@ -251,10 +251,10 @@
<script type="text/x-dust-template" id="tmpl-router">
<div class="page-header"><h1>Routers Information</h1></div>
<div>
- <ul class="dfshealth-node-legend">
- <li class="dfshealth-node-icon dfshealth-node-alive">Active</li>
- <li class="dfshealth-node-icon dfshealth-node-decommissioned">Safe mode</li>
- <li class="dfshealth-node-icon dfshealth-node-down">Unavailable</li>
+ <ul class="federationhealth-router-legend">
+ <li class="federationhealth-router-icon federationhealth-router-active">Active</li>
+ <li class="federationhealth-router-icon federationhealth-router-safemode">Safe mode</li>
+ <li class="federationhealth-router-icon federationhealth-router-unavailable">Unavailable</li>
</ul>
</div>
<table class="table">
@@ -277,7 +277,7 @@
<tbody>
{#Routers}
<tr>
- <td class="dfshealth-node-icon dfshealth-node-{iconState}" title="{title}"></td>
+ <td class="federationhealth-router-icon federationhealth-router-{iconState}" title="{title}"></td>
<td>{address}</td>
<td>{status}</td>
<td>{lastHeartbeat} sec ago</td>
@@ -395,7 +395,7 @@
<td>{nameserviceId}</td>
<td>{path}</td>
<td>{order}</td>
- <td class="dfshealth-node-icon dfshealth-mount-read-only-{readonly}"/>
+ <td class="mount-table-icon mount-table-read-only-{readonly}"/>
<td>{ownerName}</td>
<td>{groupName}</td>
<td>{mode}</td>
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.js b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.js
index b3ed868..ef0a2a4 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.js
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.js
@@ -114,19 +114,19 @@
var n = nodes[i];
n.usedPercentage = Math.round(n.used * 1.0 / n.totalSpace * 100);
n.title = "Unavailable";
- n.iconState = "down";
+ n.iconState = "unavailable";
if (n.isSafeMode === true) {
n.title = capitalise(n.state) + " (safe mode)"
- n.iconState = "decommissioned";
+ n.iconState = "safemode";
} else if (n.state === "ACTIVE") {
n.title = capitalise(n.state);
- n.iconState = "alive";
+ n.iconState = "active";
} else if (nodes[i].state === "STANDBY") {
n.title = capitalise(n.state);
- n.iconState = "down-decommissioned";
+ n.iconState = "standby";
} else if (nodes[i].state === "UNAVAILABLE") {
n.title = capitalise(n.state);
- n.iconState = "down";
+ n.iconState = "unavailable";
}
if (n.namenodeId === "null") {
n.namenodeId = "";
@@ -180,22 +180,22 @@
for (var i = 0, e = nodes.length; i < e; ++i) {
var n = nodes[i];
n.title = "Unavailable"
- n.iconState = "down";
+ n.iconState = "unavailable";
if (n.status === "INITIALIZING") {
n.title = capitalise(n.status);
- n.iconState = "alive";
+ n.iconState = "active";
} else if (n.status === "RUNNING") {
n.title = capitalise(n.status);
- n.iconState = "alive";
+ n.iconState = "active";
} else if (n.status === "SAFEMODE") {
n.title = capitalise(n.status);
- n.iconState = "down-decommissioned";
+ n.iconState = "safemode";
} else if (n.status === "STOPPING") {
n.title = capitalise(n.status);
- n.iconState = "decommissioned";
+ n.iconState = "unavailable";
} else if (n.status === "SHUTDOWN") {
n.title = capitalise(n.status);
- n.iconState = "down";
+ n.iconState = "unavailable";
}
}
}
@@ -307,7 +307,18 @@
var HELPERS = {}
function workaround(resource) {
+ function augment_read_only(mountTable) {
+ for (var i = 0, e = mountTable.length; i < e; ++i) {
+ if (mountTable[i].readonly == true) {
+ mountTable[i].readonly = "true"
+ } else {
+ mountTable[i].readonly = "false"
+ }
+ }
+ }
+
resource.MountTable = JSON.parse(resource.MountTable)
+ augment_read_only(resource.MountTable)
return resource;
}
@@ -378,4 +389,4 @@
$(window).bind('hashchange', function () {
load_page();
});
-})();
\ No newline at end of file
+})();
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/static/rbf.css b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/static/rbf.css
new file mode 100644
index 0000000..f923085
--- /dev/null
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/static/rbf.css
@@ -0,0 +1,138 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+@import url("hadoop.css");
+
+.federationhealth-namenode-capacity-bar {
+ margin-bottom:0;
+ width: 60%;
+}
+
+.federationhealth-namenode-icon:before {
+ font-size: 10pt;
+ padding-right: 1pt;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.federationhealth-namenode-active:before {
+ color: #5fa341;
+ content: "\e013";
+}
+
+.federationhealth-namenode-unavailable:before {
+ color: #c7254e;
+ content: "\e101";
+}
+
+.federationhealth-namenode-standby:before {
+ color: #2e6da6;
+ content: "\e017";
+}
+
+.federationhealth-namenode-safemode:before {
+ color: #bc5f04;
+ content: "\e090";
+}
+
+.federationhealth-namenode-legend {
+ list-style-type: none;
+ text-align: right;
+}
+
+.federationhealth-namenode-legend li {
+ display: inline;
+ padding: 10pt;
+ padding-left: 10pt;
+}
+
+.federationhealth-namenode-legend li:before {
+ padding-right: 5pt;
+}
+
+
+.federationhealth-router-capacity-bar {
+ margin-bottom:0;
+ width: 60%;
+}
+
+.federationhealth-router-icon:before {
+ font-size: 10pt;
+ padding-right: 1pt;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.federationhealth-router-active:before {
+ color: #5fa341;
+ content: "\e013";
+}
+
+.federationhealth-router-unavailable:before {
+ color: #c7254e;
+ content: "\e101";
+}
+
+.federationhealth-router-safemode:before {
+ color: #bc5f04;
+ content: "\e090";
+}
+
+.federationhealth-router-legend {
+ list-style-type: none;
+ text-align: right;
+}
+
+.federationhealth-router-legend li {
+ display: inline;
+ padding: 10pt;
+ padding-left: 10pt;
+}
+
+.federationhealth-router-legend li:before {
+ padding-right: 5pt;
+}
+
+.mount-table-icon:before {
+ font-size: 10pt;
+ padding-right: 1pt;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.mount-table-read-only-true:before {
+ color: #c7254e;
+ content: "\e033";
+}
+
+.mount-table-read-only-false:before {
+ color: #5fa341;
+ content: "\e013";
+}
+