From 5d1928f0a910a4ebba7af7d3d92185bfe0add5ad Mon Sep 17 00:00:00 2001 From: Jorge Miguel Lobo Escalona <47326048+jloboescalona2@users.noreply.github.com> Date: Mon, 31 May 2021 16:22:55 +0200 Subject: [PATCH] F #3959: show services federation (#1263) Co-authored-by: Jorge Lobo (cherry picked from commit 0a2770f45287972003ca880e9cfea34f9b895b87) --- src/sunstone/routes/oneflow.rb | 2 +- src/sunstone/sunstone-server.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/sunstone/routes/oneflow.rb b/src/sunstone/routes/oneflow.rb index 099a00ac3d..c145e6d83f 100644 --- a/src/sunstone/routes/oneflow.rb +++ b/src/sunstone/routes/oneflow.rb @@ -25,7 +25,7 @@ helpers do split_array = flow_client.one_auth.split(':') Service::Client.new( - :url => $conf[:oneflow_server], + :url => session[:zone_flow_url] || $conf[:oneflow_server], :user_agent => "Sunstone", :username => split_array.shift, :password => split_array.join(':')) diff --git a/src/sunstone/sunstone-server.rb b/src/sunstone/sunstone-server.rb index 2cfd61919b..95d3874509 100755 --- a/src/sunstone/sunstone-server.rb +++ b/src/sunstone/sunstone-server.rb @@ -538,6 +538,11 @@ helpers do zone = OpenNebula::Zone.new_with_id(active_zone_configuration['FEDERATION/ZONE_ID'].to_i, client_active_endpoint) zone.info + + url_one_zone = zone.retrieve_elements("TEMPLATE/ONEFLOW_ENDPOINT") + url_zone = zone.retrieve_elements("TEMPLATE/ENDPOINT") + session[:zone_flow_url] = (url_one_zone && url_one_zone[0]) || parse_flow_url(url_zone[0]) + session[:zone_name] = zone.name session[:zone_id] = zone.id session[:federation_mode] = active_zone_configuration['FEDERATION/MODE'].upcase @@ -568,6 +573,13 @@ helpers do session.destroy [204, ""] end + + def parse_flow_url(endpoint) + if endpoint + uri = URI(endpoint.to_s) + return "#{uri.scheme}://#{uri.host}:2474" + end + end end before do @@ -629,6 +641,7 @@ before do halt [500, OpenNebula::Error.new(msg).to_json] end + session[:zone_flow_url] = z['TEMPLATE/ONEFLOW_ENDPOINT'] || parse_flow_url(z['TEMPLATE/ENDPOINT']) session[:active_zone_endpoint] = z['TEMPLATE/ENDPOINT'] session[:zone_name] = zone_name_header session[:zone_id] = z.id