| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT 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 () { |
| "use strict"; |
| |
| var data = {ozone: {enabled: false}}; |
| |
| dust.loadSource(dust.compile($('#tmpl-dn').html(), 'dn')); |
| |
| function loadDatanodeInfo() { |
| $.get('/jmx?qry=Hadoop:service=DataNode,name=DataNodeInfo', function(resp) { |
| data.dn = workaround(resp.beans[0]); |
| data.dn.HostName = resp.beans[0]['DatanodeHostname']; |
| render(); |
| }).fail(show_err_msg); |
| } |
| |
| function loadOzoneScmInfo() { |
| $.get('/jmx?qry=Hadoop:service=OzoneDataNode,name=SCMConnectionManager', function (resp) { |
| if (resp.beans.length > 0) { |
| data.ozone.SCMServers = resp.beans[0].SCMServers; |
| data.ozone.enabled = true; |
| render(); |
| } |
| }).fail(show_err_msg); |
| } |
| |
| function loadOzoneStorageInfo() { |
| $.get('/jmx?qry=Hadoop:service=OzoneDataNode,name=ContainerLocationManager', function (resp) { |
| if (resp.beans.length > 0) { |
| data.ozone.LocationReport = resp.beans[0].LocationReport; |
| data.ozone.enabled = true; |
| render(); |
| } |
| }).fail(show_err_msg); |
| } |
| |
| function workaround(dn) { |
| function node_map_to_array(nodes) { |
| var res = []; |
| for (var n in nodes) { |
| var p = nodes[n]; |
| p.name = n; |
| res.push(p); |
| } |
| return res; |
| } |
| |
| dn.VolumeInfo = node_map_to_array(JSON.parse(dn.VolumeInfo)); |
| dn.BPServiceActorInfo = JSON.parse(dn.BPServiceActorInfo); |
| |
| return dn; |
| } |
| |
| function render() { |
| var base = dust.makeBase({ |
| 'helper_relative_time' : function (chunk, ctx, bodies, params) { |
| var value = dust.helpers.tap(params.value, chunk, ctx); |
| return chunk.write(moment().subtract(Number(value), 'seconds').fromNow(true)); |
| } |
| }); |
| dust.render('dn', base.push(data), function(err, out) { |
| $('#tab-overview').html(out); |
| $('#tab-overview').addClass('active'); |
| }); |
| } |
| |
| function show_err_msg() { |
| $('#alert-panel-body').html("Failed to load datanode information"); |
| $('#alert-panel').show(); |
| } |
| |
| loadDatanodeInfo(); |
| loadOzoneScmInfo(); |
| loadOzoneStorageInfo(); |
| |
| })(); |