From e42ed54315bf01e285ed0fd551f5622be1e80d51 Mon Sep 17 00:00:00 2001 From: Tino Vazquez Date: Mon, 26 Apr 2021 17:30:05 +0200 Subject: [PATCH] B #5361: Use serveradmin client for VMRC admin permissions needed to request VMRC token --- src/sunstone/models/SunstoneServer.rb | 14 +++++++------- src/sunstone/sunstone-server.rb | 5 +++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/sunstone/models/SunstoneServer.rb b/src/sunstone/models/SunstoneServer.rb index 64f0036098..3d72294114 100644 --- a/src/sunstone/models/SunstoneServer.rb +++ b/src/sunstone/models/SunstoneServer.rb @@ -317,7 +317,7 @@ class SunstoneServer < CloudServer if OpenNebula.is_error?(resource) return [404, resource.to_json] end - + client = @client vm_pool = VirtualMachinePool.new(client, -1) user_pool = UserPool.new(client) @@ -333,21 +333,20 @@ class SunstoneServer < CloudServer puts rc.message exit -1 end - + return guac.proxy(resource, type_connection) - end + end ######################################################################## # VMRC ######################################################################## - def startvmrc(id, vmrc) + def startvmrc(id, vmrc, _client=nil) resource = retrieve_resource("vm", id) if OpenNebula.is_error?(resource) return [404, resource.to_json] end - client = @client - vm_pool = VirtualMachinePool.new(client, -1) - user_pool = UserPool.new(client) + vm_pool = VirtualMachinePool.new(@client, -1) + user_pool = UserPool.new(@client) rc = user_pool.info if OpenNebula.is_error?(rc) @@ -361,6 +360,7 @@ class SunstoneServer < CloudServer exit -1 end + client = _client.nil? ? @client : _client return vmrc.proxy(resource, client) end diff --git a/src/sunstone/sunstone-server.rb b/src/sunstone/sunstone-server.rb index a5d8573626..e2ba1e3b9f 100755 --- a/src/sunstone/sunstone-server.rb +++ b/src/sunstone/sunstone-server.rb @@ -381,7 +381,7 @@ helpers do fireedge_token = "" res = Net::HTTP.post_form(uri, params) fireedge_token = JSON.parse(res.body)['data']['token'] if res.is_a?(Net::HTTPSuccess) - + response = fireedge_token rescue StandardError => error logger.error { "Cannot connect with fireedge: #{error.message}" } @@ -1150,7 +1150,8 @@ end ############################################################################## post '/vm/:id/startvmrc' do vm_id = params[:id] - @SunstoneServer.startvmrc(vm_id, $vmrc) + serveradmin_client = $cloud_auth.client(nil, session[:active_zone_endpoint]) + @SunstoneServer.startvmrc(vm_id, $vmrc, serveradmin_client) end ##############################################################################