1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-22 18:50:08 +03:00

F #5019: allow remote oned (#403)

This commit is contained in:
Carlos J. Herrera 2020-11-12 05:07:21 -05:00 committed by GitHub
parent 9baaff9a85
commit 51061fee1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 49 additions and 23 deletions

View File

@ -519,8 +519,12 @@ EOT
@translation_hash = nil
end
def set_client(options)
@client=OpenNebulaHelper::OneHelper.get_client(options, true)
def set_client(options, client=nil)
if client.nil?
@client=OpenNebulaHelper::OneHelper.get_client(options, true)
else
@client = client
end
end
def create_resource(options, &block)

View File

@ -21,7 +21,7 @@ require 'webauthn'
module SunstoneWebAuthn
def self.configure(conf)
@client = OpenNebula::Client.new
@client = OpenNebula::Client.new(nil, conf[:one_xmlrpc])
@challenges = Hash.new
WebAuthn.configure do |config|
if !conf.include?(:webauthn_origin) || conf[:webauthn_origin] == ''

View File

@ -62,7 +62,7 @@ helpers do
if vpass.size > MAX_VCENTER_PASSWORD_LENGTH
begin
client = OpenNebula::Client.new
client = OpenNebula::Client.new(nil, $conf[:one_xmlrpc])
system = OpenNebula::System.new(client)
config = system.get_configuration
token = config["ONE_KEY"]
@ -96,16 +96,16 @@ helpers do
error code, error.to_json
end
def viclient_from_host
def viclient_from_host(client)
host_id = params["host"]
VCenterDriver::VIClient.new_from_host(host_id) if host_id
VCenterDriver::VIClient.new_from_host(host_id, client) if host_id
end
def new_vcenter_importer(type)
def new_vcenter_importer(type, one_client=nil)
host_id = params["host"]
vi_client = VCenterDriver::VIClient.new_from_host(host_id) if host_id
one_client = OpenNebula::Client.new
one_client = OpenNebula::Client.new(nil, $conf[:one_xmlrpc]) if one_client.nil?
vi_client = VCenterDriver::VIClient.new_from_host(host_id, one_client) if host_id
$importer = VCenterDriver::VcImporter.new_child(one_client, vi_client, type)
end
@ -115,6 +115,9 @@ get '/vcenter/hosts' do
begin
dc_folder = VCenterDriver::DatacenterFolder.new(vcenter_client)
client = OpenNebula::Client.new(nil, $conf[:one_xmlrpc])
VCenterDriver::VIHelper.set_client(nil, client)
hpool = VCenterDriver::VIHelper.one_pool(OpenNebula::HostPool, false)
if hpool.respond_to?(:message)
@ -137,7 +140,8 @@ end
get '/vcenter/datastores' do
begin
new_vcenter_importer("datastores")
client = OpenNebula::Client.new(nil, $conf[:one_xmlrpc])
new_vcenter_importer("datastores", client)
[200, $importer.retrieve_resources.to_json]
rescue Exception => e
@ -161,7 +165,8 @@ end
get '/vcenter/templates' do
begin
new_vcenter_importer("templates")
client = OpenNebula::Client.new(nil, $conf[:one_xmlrpc])
new_vcenter_importer("templates", client)
[200, $importer.retrieve_resources.to_json]
rescue Exception => e
@ -185,7 +190,8 @@ end
get '/vcenter/networks' do
begin
new_vcenter_importer("networks")
client = OpenNebula::Client.new(nil, $conf[:one_xmlrpc])
new_vcenter_importer("networks", client)
opts = {:host => params["host"], :filter => true}
[200, $importer.retrieve_resources(opts).to_json]
rescue Exception => e
@ -209,8 +215,10 @@ end
get '/vcenter/images' do
begin
new_vcenter_importer("images")
client = OpenNebula::Client.new(nil, $conf[:one_xmlrpc])
new_vcenter_importer("images", client)
VCenterDriver::VIHelper.set_client(nil, client)
ds = VCenterDriver::VIHelper.one_item(OpenNebula::Datastore, params["ds"])
opts = {
@ -240,8 +248,8 @@ end
post '/vcenter/wild' do
begin
client = OpenNebula::Client.new
vi_client = viclient_from_host
client = OpenNebula::Client.new(nil, $conf[:one_xmlrpc])
vi_client = viclient_from_host(client)
importer = VCenterDriver::VmmImporter.new(client, vi_client).tap do |im|
im.list(params["host"], params["opts"])
end

View File

@ -557,7 +557,8 @@ class DatacenterFolder
networks = {}
# Selected host in OpenNebula
one_client = OpenNebula::Client.new()
one_client = OpenNebula::Client.new(nil, $conf[:one_xmlrpc])
one_host = OpenNebula::Host.new_with_id(args[:host], one_client)
rc = one_host.info
raise rc.message if OpenNebula.is_error? rc

View File

@ -795,7 +795,12 @@ class DsImporter < VCenterDriver::VcImporter
add_clusters(id, clusters)
inner.call(one_object, @vi_client.get_host_credentials)
inner.call(
one_object,
@vi_client.get_host_credentials(
@one_client
)
)
end
end

View File

@ -51,13 +51,13 @@ class VIClient
!!@rp
end
def get_host_credentials()
def get_host_credentials(one_client)
raise "no host id defined!" if @host_id == -1
host = OpenNebula::Host.new_with_id(@host_id, OpenNebula::Client.new)
host = OpenNebula::Host.new_with_id(@host_id, one_client)
rc = host.info
if OpenNebula.is_error?(rc)
raise "Could not get host info for ID: #{host_id} - #{rc.message}"
raise "Could not get host info for ID: #{@host_id} - #{rc.message}"
end
{pass: host["TEMPLATE/VCENTER_PASSWORD"],
@ -121,9 +121,9 @@ class VIClient
return entities
end
def self.new_from_host(host_id)
def self.new_from_host(host_id, client=nil)
begin
client = OpenNebula::Client.new
client = OpenNebula::Client.new if client.nil?
host = OpenNebula::Host.new_with_id(host_id, client)
rc = host.info(true)
if OpenNebula.is_error?(rc)

View File

@ -23,7 +23,15 @@ class VIHelper
VM_PREFIX_DEFAULT = "one-$i-"
def self.client
@@client ||= OpenNebula::Client.new
@@client ||= OpenNebula::Client.new(nil, $conf[:one_xmlrpc]) # rubocop:disable Style/ClassVars
end
def self.set_client(options, client=nil)
if client.nil?
@@client=OpenNebulaHelper::OneHelper.get_client(options, true)
else
@@client = client
end
end
def self.return_if_error(rc, item, exit_if_fail)