diff --git a/src/cli/onevcenter b/src/cli/onevcenter index 9529c10f89..b54451edc3 100755 --- a/src/cli/onevcenter +++ b/src/cli/onevcenter @@ -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) diff --git a/src/sunstone/public/js/plugins/hosts-tab.js b/src/sunstone/public/js/plugins/hosts-tab.js index 5c7e6dfaf3..48cec6c66f 100644 --- a/src/sunstone/public/js/plugins/hosts-tab.js +++ b/src/sunstone/public/js/plugins/hosts-tab.js @@ -1161,6 +1161,8 @@ function setupCreateHostDialog(){ ''+ '
'+ + tr("Virtual Network created successfully")+' ID:'+response.VNET.ID+ + '
'); + }, + error: function (request, error_json){ + $(".vcenter_network_result", network_context).html(''+ + ''+ + ''+ + ''); + + $(".vcenter_network_response", network_context).html(''+ + (error_json.error.message || tr("Cannot contact server: is it running and reachable?"))+ + '
'); + } + }); + }) + }, error: function (request, error_json){ - $(".vcenter_host_result", context).html(''+ + $(".vcenter_host_result", $create_host_dialog).html(''+ ''+ ''+ ''); - $(".vcenter_host_response", context).html(''+ + $(".vcenter_host_response", $create_host_dialog).html('
'+ (error_json.error.message || tr("Cannot contact server: is it running and reachable?"))+ '
'); } diff --git a/src/sunstone/routes/vcenter.rb b/src/sunstone/routes/vcenter.rb index 8ecf3f6564..2d70844863 100644 --- a/src/sunstone/routes/vcenter.rb +++ b/src/sunstone/routes/vcenter.rb @@ -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 \ No newline at end of file diff --git a/src/vmm_mad/remotes/vcenter/vcenter_driver.rb b/src/vmm_mad/remotes/vcenter/vcenter_driver.rb index 5d2fca7d4c..a4a429de15 100644 --- a/src/vmm_mad/remotes/vcenter/vcenter_driver.rb +++ b/src/vmm_mad/remotes/vcenter/vcenter_driver.rb @@ -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