diff --git a/src/sunstone/public/js/plugins/hosts-tab.js b/src/sunstone/public/js/plugins/hosts-tab.js index aaf4fb6392..2e203443d3 100644 --- a/src/sunstone/public/js/plugins/hosts-tab.js +++ b/src/sunstone/public/js/plugins/hosts-tab.js @@ -149,6 +149,12 @@ var create_host_tmpl = \
'+ - tr("Template created successfully")+' ID:'+response.VMTEMPLATE.ID+ - '
'); - }, - error: function (request, error_json){ - $(".vcenter_template_result", template_context).html(''+ - ''+ - ''+ - ''); - - $(".vcenter_template_response", template_context).html(''+ - (error_json.error.message || tr("Cannot contact server: is it running and reachable?"))+ - '
'); - } - }); - }) - - $.each($(".network_name:checked", cluster_context), function(){ - var network_context = $(this).closest(".vcenter_network"); - - $(".vcenter_network_result:not(.success)", network_context).html( - ''+ - ''+ - ''+ - ''); - - var network_size = $(".netsize", network_context).val(); - var network_tmpl = $(this).data("one_network"); - var netname = $(this).data("network_name"); - var type = $('.type_select', network_context).val(); - - var ar_array = []; - ar_array.push("TYPE=" + type); - ar_array.push("SIZE=" + network_size); - - switch(type) { - case 'ETHER': - var mac = $('.eth_mac_net', network_context).val(); - - if (mac){ - ar_array.push("MAC=" + mac); - } - - break; - case 'IP4': - var mac = $('.four_mac_net', network_context).val(); - var ip = $('.four_ip_net', network_context).val(); - - if (mac){ - ar_array.push("MAC=" + mac); - } - if (ip) { - ar_array.push("IP=" + ip); - } - - break; - case 'IP6': - var mac = $('.six_mac_net', network_context).val(); - var gp = $('.six_global_net', network_context).val(); - var ula = $('.six_mac_net', network_context).val(); - - if (mac){ - ar_array.push("MAC=" + mac); - } - if (gp) { - ar_array.push("GLOBAL_PREFIX=" + gp); - } - if (ula){ - ar_array.push("ULA_PREFIX=" + ula); - } - - break; - } - - network_tmpl += "\nAR=[" - network_tmpl += ar_array.join(",\n") - network_tmpl += "]" - - 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( - ''+ - ''+ - ''+ - ''); - - $(".vcenter_network_response", network_context).html(''+ - 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", $create_host_dialog).html(''+ @@ -1574,6 +1534,144 @@ function setupCreateHostDialog(){ }); }) + $.each($(".template_name:checked", $create_host_dialog), function(){ + var template_context = $(this).closest(".vcenter_template"); + + $(".vcenter_template_result:not(.success)", template_context).html( + ''+ + ''+ + ''+ + ''); + + var template_json = { + "vmtemplate": { + "template_raw": $(this).data("one_template") + } + }; + + OpenNebula.Template.create({ + timeout: true, + data: template_json, + success: function(request, response) { + OpenNebula.Helper.clear_cache("VMTEMPLATE"); + $(".vcenter_template_result", template_context).addClass("success").html( + ''+ + ''+ + ''+ + ''); + + $(".vcenter_template_response", template_context).html(''+ + tr("Template created successfully")+' ID:'+response.VMTEMPLATE.ID+ + '
'); + }, + error: function (request, error_json){ + $(".vcenter_template_result", template_context).html(''+ + ''+ + ''+ + ''); + + $(".vcenter_template_response", template_context).html(''+ + (error_json.error.message || tr("Cannot contact server: is it running and reachable?"))+ + '
'); + } + }); + }) + + $.each($(".network_name:checked", $create_host_dialog), function(){ + var network_context = $(this).closest(".vcenter_network"); + + $(".vcenter_network_result:not(.success)", network_context).html( + ''+ + ''+ + ''+ + ''); + + var network_size = $(".netsize", network_context).val(); + var network_tmpl = $(this).data("one_network"); + var netname = $(this).data("network_name"); + var type = $('.type_select', network_context).val(); + + var ar_array = []; + ar_array.push("TYPE=" + type); + ar_array.push("SIZE=" + network_size); + + switch(type) { + case 'ETHER': + var mac = $('.eth_mac_net', network_context).val(); + + if (mac){ + ar_array.push("MAC=" + mac); + } + + break; + case 'IP4': + var mac = $('.four_mac_net', network_context).val(); + var ip = $('.four_ip_net', network_context).val(); + + if (mac){ + ar_array.push("MAC=" + mac); + } + if (ip) { + ar_array.push("IP=" + ip); + } + + break; + case 'IP6': + var mac = $('.six_mac_net', network_context).val(); + var gp = $('.six_global_net', network_context).val(); + var ula = $('.six_mac_net', network_context).val(); + + if (mac){ + ar_array.push("MAC=" + mac); + } + if (gp) { + ar_array.push("GLOBAL_PREFIX=" + gp); + } + if (ula){ + ar_array.push("ULA_PREFIX=" + ula); + } + + break; + } + + network_tmpl += "\nAR=[" + network_tmpl += ar_array.join(",\n") + network_tmpl += "]" + + 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( + ''+ + ''+ + ''+ + ''); + + $(".vcenter_network_response", network_context).html(''+ + 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?"))+ + '
'); + } + }); + }); + return false }); diff --git a/src/sunstone/routes/vcenter.rb b/src/sunstone/routes/vcenter.rb index 2d70844863..5718dbf2b2 100644 --- a/src/sunstone/routes/vcenter.rb +++ b/src/sunstone/routes/vcenter.rb @@ -67,20 +67,19 @@ get '/vcenter' do end end -get '/vcenter/:datacenter/cluster/:name' do +get '/vcenter/templates' do begin - rs = vcenter_client.vm_templates - - templates = rs[params[:datacenter]] + templates = vcenter_client.vm_templates( + $cloud_auth.client(session[:user], session[:active_zone_endpoint])) if templates.nil? - msg = "Datacenter " + params[:datacenter] + "not found" + msg = "No datacenter found" logger.error("[vCenter] " + msg) error = Error.new(msg) error 404, error.to_json end - ctemplates = templates.select{|t| t[:host] == params[:name]} - [200, ctemplates.to_json] + #ctemplates = templates.select{|t| t[:host] == params[:name]} + [200, templates.to_json] rescue Exception => e logger.error("[vCenter] " + e.message) error = Error.new(e.message) @@ -88,13 +87,12 @@ get '/vcenter/:datacenter/cluster/:name' do end end -get '/vcenter/:datacenter/network/:name' do +get '/vcenter/networks' do begin - rs = vcenter_client.vcenter_networks - - networks = rs[params[:datacenter]] + networks = vcenter_client.vcenter_networks( + $cloud_auth.client(session[:user], session[:active_zone_endpoint])) if networks.nil? - msg = "Datacenter " + params[:datacenter] + "not found" + msg = "No datacenter found" logger.error("[vCenter] " + msg) error = Error.new(msg) error 404, error.to_json