mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
Feature #3306: Add size to network importing
This commit is contained in:
parent
256d8a73db
commit
98df77f19b
@ -278,15 +278,9 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
||||
one_vn = ::OpenNebula::VirtualNetwork.new(
|
||||
::OpenNebula::Template.build_xml, vc.one)
|
||||
|
||||
vnet_template = "NAME=\"#{n[:name]}\"\n" +
|
||||
"BRIDGE=\"#{n[:name]}\"\n" +
|
||||
"VCENTER_TYPE=\"#{n[:type]}\"" +
|
||||
"AR=[\n" +
|
||||
" TYPE = \"ETHER\"\n," +
|
||||
" SIZE = \"#{size.to_i}\"\n]"
|
||||
|
||||
vnet_template += "VLAN=\"YES\"\nVLAN_ID=#{n[:vlan]}" if n[:vlan]
|
||||
|
||||
vnet_template = n[:one] +
|
||||
" SIZE = \"#{size.to_i}\"\n]"
|
||||
|
||||
rc = one_vn.allocate(vnet_template)
|
||||
|
||||
if ::OpenNebula.is_error?(rc)
|
||||
|
@ -1161,6 +1161,8 @@ function setupCreateHostDialog(){
|
||||
'</div>'+
|
||||
'<div class="vcenter_templates">'+
|
||||
'</div>'+
|
||||
'<div class="vcenter_networks">'+
|
||||
'</div>'+
|
||||
'</div>').appendTo(vcenter_container)
|
||||
|
||||
$(".cluster_name", row).data("cluster_name", cluster_name)
|
||||
@ -1223,6 +1225,68 @@ function setupCreateHostDialog(){
|
||||
} else {
|
||||
templates_container.html("");
|
||||
}
|
||||
|
||||
var networks_container = $(".vcenter_networks", $(this).closest(".vcenter_cluster"));
|
||||
if ($(this).is(":checked")) {
|
||||
var path = '/vcenter/' + $(this).data("datacenter_name") + '/network/' + $(this).data("cluster_name");
|
||||
networks_container.html(generateAdvancedSection({
|
||||
html_id: path,
|
||||
title: tr("Networks"),
|
||||
content: '<span class="fa-stack fa-2x" style="color: #dfdfdf">'+
|
||||
'<i class="fa fa-cloud fa-stack-2x"></i>'+
|
||||
'<i class="fa fa-spinner fa-spin fa-stack-1x fa-inverse"></i>'+
|
||||
'</span>'
|
||||
}))
|
||||
|
||||
$('a', networks_container).trigger("click")
|
||||
|
||||
$.ajax({
|
||||
url: path,
|
||||
type: "GET",
|
||||
data: {timeout: false},
|
||||
dataType: "json",
|
||||
headers: {
|
||||
"X_VCENTER_USER": $("#vcenter_user", $create_host_dialog).val(),
|
||||
"X_VCENTER_PASSWORD": $("#vcenter_password", $create_host_dialog).val(),
|
||||
"X_VCENTER_HOST": $("#vcenter_host", $create_host_dialog).val()
|
||||
},
|
||||
success: function(response){
|
||||
$(".content", networks_container).html("");
|
||||
|
||||
$.each(response, function(id, network){
|
||||
var trow = $('<div class="vcenter_network">' +
|
||||
'<div class="row">' +
|
||||
'<div class="large-10 columns">' +
|
||||
'<label class='+escape(network.name)+'>' +
|
||||
'<div><div "large-10 columns"><label class='+escape(network.name)+'>' +
|
||||
'<input type="checkbox" class="network_name" checked/> ' +
|
||||
network.name + ' <span style="color: #999">' + network.type + '</span></div>' +
|
||||
'<div "large-2 columns"><input style="width: 50px" type="text" class="netsize" value="255"/>' +
|
||||
'</label>' +
|
||||
'<div class="large-12 columns vcenter_network_response">'+
|
||||
'</div>'+
|
||||
'</div>' +
|
||||
'<div class="large-2 columns vcenter_network_result">'+
|
||||
'</div>'+
|
||||
'</div>'+
|
||||
'<div class="vcenter_networks">'+
|
||||
'</div>'+
|
||||
'</div>').appendTo($(".content", networks_container))
|
||||
|
||||
$(".network_name", trow).data("network_name", network.name)
|
||||
$(".network_name", trow).data("one_network", network.one)
|
||||
});
|
||||
},
|
||||
error: function(response){
|
||||
networks_container.html("");
|
||||
onError({}, OpenNebula.Error(response));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
networks_container.html("");
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
});
|
||||
}
|
||||
@ -1327,14 +1391,64 @@ function setupCreateHostDialog(){
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
$.each($(".network_name:checked", cluster_context), function(){
|
||||
var network_context = $(this).closest(".vcenter_network");
|
||||
|
||||
$(".vcenter_network_result:not(.success)", network_context).html(
|
||||
'<span class="fa-stack fa-2x" style="color: #dfdfdf">'+
|
||||
'<i class="fa fa-cloud fa-stack-2x"></i>'+
|
||||
'<i class="fa fa-spinner fa-spin fa-stack-1x fa-inverse"></i>'+
|
||||
'</span>');
|
||||
|
||||
network_name = unescape($(network_context).find('label')[0].className);
|
||||
network_size = $(".netsize", network_context).val();
|
||||
network_tmpl = $(this).data("one_network");
|
||||
|
||||
network_tmpl = network_tmpl + ' SIZE = "'+ network_size +'"]'
|
||||
|
||||
var vnet_json = {
|
||||
"vnet": {
|
||||
"vnet_raw": network_tmpl
|
||||
}
|
||||
};
|
||||
|
||||
OpenNebula.Network.create({
|
||||
timeout: true,
|
||||
data: vnet_json,
|
||||
success: function(request, response) {
|
||||
OpenNebula.Helper.clear_cache("VNET");
|
||||
$(".vcenter_network_result", network_context).addClass("success").html(
|
||||
'<span class="fa-stack fa-2x" style="color: #dfdfdf">'+
|
||||
'<i class="fa fa-cloud fa-stack-2x"></i>'+
|
||||
'<i class="fa fa-check fa-stack-1x fa-inverse"></i>'+
|
||||
'</span>');
|
||||
|
||||
$(".vcenter_network_response", network_context).html('<p style="font-size:12px" class="running-color">'+
|
||||
tr("Virtual Network created successfully")+' ID:'+response.VNET.ID+
|
||||
'</p>');
|
||||
},
|
||||
error: function (request, error_json){
|
||||
$(".vcenter_network_result", network_context).html('<span class="fa-stack fa-2x" style="color: #dfdfdf">'+
|
||||
'<i class="fa fa-cloud fa-stack-2x"></i>'+
|
||||
'<i class="fa fa-warning fa-stack-1x fa-inverse"></i>'+
|
||||
'</span>');
|
||||
|
||||
$(".vcenter_network_response", network_context).html('<p style="font-size:12px" class="error-color">'+
|
||||
(error_json.error.message || tr("Cannot contact server: is it running and reachable?"))+
|
||||
'</p>');
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
},
|
||||
error: function (request, error_json){
|
||||
$(".vcenter_host_result", context).html('<span class="fa-stack fa-2x" style="color: #dfdfdf">'+
|
||||
$(".vcenter_host_result", $create_host_dialog).html('<span class="fa-stack fa-2x" style="color: #dfdfdf">'+
|
||||
'<i class="fa fa-cloud fa-stack-2x"></i>'+
|
||||
'<i class="fa fa-warning fa-stack-1x fa-inverse"></i>'+
|
||||
'</span>');
|
||||
|
||||
$(".vcenter_host_response", context).html('<p style="font-size:12px" class="error-color">'+
|
||||
$(".vcenter_host_response", $create_host_dialog).html('<p style="font-size:12px" class="error-color">'+
|
||||
(error_json.error.message || tr("Cannot contact server: is it running and reachable?"))+
|
||||
'</p>');
|
||||
}
|
||||
|
@ -86,4 +86,24 @@ get '/vcenter/:datacenter/cluster/:name' do
|
||||
error = Error.new(e.message)
|
||||
error 403, error.to_json
|
||||
end
|
||||
end
|
||||
|
||||
get '/vcenter/:datacenter/network/:name' do
|
||||
begin
|
||||
rs = vcenter_client.vcenter_networks
|
||||
|
||||
networks = rs[params[:datacenter]]
|
||||
if networks.nil?
|
||||
msg = "Datacenter " + params[:datacenter] + "not found"
|
||||
logger.error("[vCenter] " + msg)
|
||||
error = Error.new(msg)
|
||||
error 404, error.to_json
|
||||
end
|
||||
|
||||
[200, networks.to_json]
|
||||
rescue Exception => e
|
||||
logger.error("[vCenter] " + e.message)
|
||||
error = Error.new(e.message)
|
||||
error 403, error.to_json
|
||||
end
|
||||
end
|
@ -252,42 +252,57 @@ class VIClient
|
||||
one_nets = []
|
||||
|
||||
networks.each { |n|
|
||||
vnet_template = "NAME=\"#{n[:name]}\"\n" +
|
||||
"BRIDGE=\"#{n[:name]}\"\n" +
|
||||
"VCENTER_TYPE=\"Port Group\"" +
|
||||
"AR=[\n" +
|
||||
" TYPE = \"ETHER\"\n,"
|
||||
|
||||
one_nets << {:name => n.name,
|
||||
:bridge => n.name,
|
||||
:type => "Port Group"}
|
||||
:type => "Port Group",
|
||||
:one => vnet_template}
|
||||
}
|
||||
|
||||
vcenter_networks[dc.name] = one_nets
|
||||
|
||||
networks = get_entities(dc.networkFolder,
|
||||
'DistributedVirtualPortgroup' )
|
||||
one_nets = []
|
||||
|
||||
networks.each { |n|
|
||||
one_net = {:name => n.name,
|
||||
:bridge => n.name,
|
||||
:type=> "Distributed Port Group"}
|
||||
vnet_template = "NAME=\"#{n[:name]}\"\n" +
|
||||
"BRIDGE=\"#{n[:name]}\"\n" +
|
||||
"VCENTER_TYPE=\"Distributed Port Group\"" +
|
||||
"AR=[\n" +
|
||||
" TYPE = \"ETHER\"\n,"
|
||||
|
||||
vlan = n.config.defaultPortConfig.vlan.vlanId
|
||||
vlan = n.config.defaultPortConfig.vlan.vlanId
|
||||
vlan_str = ""
|
||||
|
||||
if vlan != 0
|
||||
if vlan.is_a? Array
|
||||
vlan_str = ""
|
||||
vlan.each{|v|
|
||||
vlan_str += v.start + ".." + v.end + ","
|
||||
vlan_str += v.start.to_s + ".." + v.end.to_s + ","
|
||||
}
|
||||
vlan_str.chop!
|
||||
else
|
||||
vlan_str = vlan.to_s
|
||||
end
|
||||
end
|
||||
|
||||
one_net = {:name => n.name,
|
||||
:bridge => n.name,
|
||||
:type => "Distributed Port Group",
|
||||
:one => vnet_template}
|
||||
|
||||
if !vlan_str.empty?
|
||||
one_net[:vlan] = vlan_str
|
||||
vnet_template = "VLAN=\"YES\"\nVLAN_ID=#{one_net[:vlan]}" +
|
||||
vnet_template
|
||||
end
|
||||
|
||||
one_nets << one_net
|
||||
}
|
||||
|
||||
vcenter_networks[dc.name] += one_nets
|
||||
vcenter_networks[dc.name] = one_nets
|
||||
}
|
||||
|
||||
return vcenter_networks
|
||||
|
Loading…
x
Reference in New Issue
Block a user