1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-02-04 17:47:00 +03:00

Feature #4215: Show VR nics in a nice table

This commit is contained in:
Carlos Martín 2015-12-18 16:47:46 +01:00
parent 603c726a18
commit e3ffbd2409
4 changed files with 120 additions and 3 deletions

View File

@ -108,6 +108,80 @@ class OneVirtualRouterHelper < OpenNebulaHelper::OneHelper
puts str % [e, mask]
}
if obj.has_elements?("/VROUTER/TEMPLATE/NIC")
puts
CLIHelper.print_header(str_h1 % "VIRTUAL ROUTER NICS",false)
nic_default = {"NETWORK" => "-",
"IP" => "-"}
shown_ips = []
array_id = 0
vm_nics = [obj.to_hash['VROUTER']['TEMPLATE']['NIC']].flatten.compact
vm_nics.each {|nic|
next if nic.has_key?("CLI_DONE")
if nic.has_key?("IP6_LINK")
shown_ips << nic["IP6_LINK"]
ip6_link = {"IP" => nic.delete("IP6_LINK"),
"CLI_DONE" => true,
"DOUBLE_ENTRY" => true}
vm_nics.insert(array_id+1,ip6_link)
array_id += 1
end
if nic.has_key?("IP6_ULA")
shown_ips << nic["IP6_ULA"]
ip6_link = {"IP" => nic.delete("IP6_ULA"),
"CLI_DONE" => true,
"DOUBLE_ENTRY" => true}
vm_nics.insert(array_id+1,ip6_link)
array_id += 1
end
if nic.has_key?("IP6_GLOBAL")
shown_ips << nic["IP6_GLOBAL"]
ip6_link = {"IP" => nic.delete("IP6_GLOBAL"),
"CLI_DONE" => true,
"DOUBLE_ENTRY" => true}
vm_nics.insert(array_id+1,ip6_link)
array_id += 1
end
shown_ips << nic["IP"] if nic.has_key?("IP")
nic.merge!(nic_default) {|k,v1,v2| v1}
array_id += 1
}
CLIHelper::ShowTable.new(nil, self) do
column :NETWORK, "", :left, :size=>20 do |d|
if d["DOUBLE_ENTRY"]
""
else
d["NETWORK"]
end
end
column :IP, "",:left, :donottruncate, :size=>15 do |d|
d["IP"]
end
end.show(vm_nics,{})
end
while obj.has_elements?("/VROUTER/TEMPLATE/NIC")
obj.delete_element("/VROUTER/TEMPLATE/NIC")
end
puts
CLIHelper.print_header(str_h1 % "TEMPLATE CONTENTS",false)

View File

@ -31,6 +31,7 @@ define(function(require) {
var TemplatesTable = require('tabs/templates-tab/datatable');
var OpenNebulaVirtualRouter = require('opennebula/virtualrouter');
var OpenNebulaTemplate = require('opennebula/template');
var OpenNebulaAction = require('opennebula/action');
var Notifier = require('utils/notifier');
/*
@ -147,6 +148,8 @@ define(function(require) {
virtual_router_json.NIC = nics;
}
delete virtual_router_json["FLOATING_IP"];
var tmplId = this.templatesTable.retrieveResourceTableSelect();
if (this.action == "create") {
@ -197,6 +200,9 @@ define(function(require) {
extra_param: extra_info
},
timeout: true,
success: function(request, response){
OpenNebulaAction.clear_cache("VM");
},
error: Notifier.onError
});
}

View File

@ -70,9 +70,17 @@ define(function(require) {
var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);
var nics = [];
if ($.isArray(this.element.TEMPLATE.NIC)){
nics = this.element.TEMPLATE.NIC;
} else if (!$.isEmptyObject(this.element.TEMPLATE.NIC)){
nics = [this.element.TEMPLATE.NIC];
}
// TODO: simplify interface?
var strippedTemplate = $.extend({}, this.element.TEMPLATE);
//delete strippedTemplate[""];
delete strippedTemplate["NIC"];
var templateTableHTML = TemplateTable.html(strippedTemplate, RESOURCE,
Locale.tr("Attributes"));
@ -82,6 +90,7 @@ define(function(require) {
'element': this.element,
'renameTrHTML': renameTrHTML,
'permissionsTableHTML': permissionsTableHTML,
'nics': nics,
'templateTableHTML': templateTableHTML
});
}
@ -101,9 +110,13 @@ define(function(require) {
// TODO: simplify interface?
var strippedTemplate = $.extend({}, this.element.TEMPLATE);
//delete strippedTemplate[""];
delete strippedTemplate["NIC"];
var hiddenValues = {RULE: this.element.TEMPLATE.RULE};
var hiddenValues = {};
if (this.element.TEMPLATE.NIC != undefined){
hiddenValues.NIC = this.element.TEMPLATE.NIC;
}
TemplateTable.setup(strippedTemplate, RESOURCE, this.element.ID, context, hiddenValues);
//===

View File

@ -35,6 +35,30 @@
{{{permissionsTableHTML}}}
</div>
</div>
<div class="row">
<div class="large-9 columns">
<table class="dataTable">
<thead>
<tr>
<th>{{tr "Network"}}</th>
<th>{{tr "Floating IP"}}</th>
<th>{{tr "Floating IPv6 ULA"}}</th>
<th>{{tr "Floating IPv6 Global"}}</th>
</tr>
</thead>
<tbody>
{{#each nics}}
<tr>
<td>{{NETWORK}}</td>
<td>{{valOrDefault IP "--"}}</td>
<td>{{valOrDefault IP6_ULA "--"}}</td>
<td>{{valOrDefault IP6_GLOBAL "--"}}</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
<div class="row">
<div class="large-9 columns">
{{{templateTableHTML}}}