|
63 | 63 | container.children = _.sortBy(container.children, 'name');
|
64 | 64 | // Parse index
|
65 | 65 | container.index = parseInt(container.id.split('-')[1]);
|
66 |
| - // Search for resource config in packing plan |
| 66 | + // Search for container and instance resource config in packing plan |
67 | 67 | container.required_resources = {
|
68 |
| - 'cpu': 0, |
69 |
| - 'disk': 0, |
70 |
| - 'ram': 0 |
| 68 | + 'cpu': 'unknown', |
| 69 | + 'disk': 'unknown', |
| 70 | + 'ram': 'unknown' |
71 | 71 | };
|
72 | 72 | for (var i in containerPlan) {
|
73 | 73 | var packing = containerPlan[i];
|
74 | 74 | if (packing.id === container.index) {
|
75 | 75 | container.required_resources = packing.required_resources;
|
| 76 | + // Get instance resources |
| 77 | + var instance_resources = {}; |
| 78 | + for (var j in packing.instances) { |
| 79 | + var inst = packing.instances[j]; |
| 80 | + instance_resources[inst.component_name + '_' + inst.task_id] = inst.instance_resources; |
| 81 | + } |
| 82 | + container.instance_resources = instance_resources; |
76 | 83 | }
|
77 | 84 | }
|
78 | 85 | });
|
|
86 | 93 | return d.children.length;
|
87 | 94 | });
|
88 | 95 |
|
| 96 | + function formatByteSize(byteSize) { |
| 97 | + if (byteSize > 1024 * 1024 * 1024 / 2) { |
| 98 | + return (byteSize / (1024 * 1024 * 1024)).toFixed(2) + 'GB'; |
| 99 | + } else if (byteSize > 1024 * 1024 / 2) { |
| 100 | + return (byteSize / (1024 * 1024)).toFixed(2) + 'MB'; |
| 101 | + } else if (byteSize > 1024 / 2) { |
| 102 | + return (byteSize / 1024).toFixed(2) + 'KB'; |
| 103 | + } else { |
| 104 | + return byteSize + 'B'; |
| 105 | + } |
| 106 | + } |
| 107 | + |
89 | 108 | /**
|
90 | 109 | * Config paramaters for container/heron instance layout
|
91 | 110 | */
|
|
159 | 178 | });
|
160 | 179 |
|
161 | 180 | var container_tip = d3.tip()
|
162 |
| - .attr('class', 'd3-tip main text-center container') |
| 181 | + .attr('class', 'd3-tip main container') |
163 | 182 | .offset([8, 0])
|
164 | 183 | .direction('s')
|
165 | 184 | .html(function (container) {
|
| 185 | + var instance_cpu = ''; |
| 186 | + var instance_ram = ''; |
| 187 | + var instance_disk = ''; |
| 188 | + if (container.instance_resources) { |
| 189 | + for (var inst in container.instance_resources) { |
| 190 | + instance_cpu += '<li> - ' + inst + ': <span>' + container.instance_resources[inst].cpu + '</span></li>'; |
| 191 | + instance_ram += '<li> - ' + inst + ': <span>' + formatByteSize(container.instance_resources[inst].ram) + '</span></li>'; |
| 192 | + instance_disk += '<li> - ' + inst + ': <span>' + formatByteSize(container.instance_resources[inst].disk) + '</span></li>'; |
| 193 | + } |
| 194 | + } |
166 | 195 | return '<ul>' +
|
167 |
| - '<li>cpu required: ' + container.required_resources.cpu + '</li>' + |
168 |
| - '<li>ram required: ' + (container.required_resources.ram / 1048576).toFixed(2) + 'MB</li>' + |
169 |
| - '<li>disk required: ' + (container.required_resources.disk / 1048576).toFixed(2) + 'MB</li>' + |
170 |
| - '</ul>'; |
| 196 | + '<li>cpu required: <span>' + container.required_resources.cpu + '</span></li>' + instance_cpu + |
| 197 | + '<li>ram required: <span>' + formatByteSize(container.required_resources.ram) + '</span></li>' + instance_ram + |
| 198 | + '<li>disk required: <span>' + formatByteSize(container.required_resources.disk) + '</span></li>' + instance_disk + |
| 199 | + '</ul>'; |
171 | 200 | });
|
172 | 201 |
|
173 | 202 | var containerGs = svg.selectAll('.physical-plan')
|
|
0 commit comments