diff --git a/app/models/manageiq/providers/vmware/infra_manager.rb b/app/models/manageiq/providers/vmware/infra_manager.rb index c53ae4b10..dab0d27aa 100644 --- a/app/models/manageiq/providers/vmware/infra_manager.rb +++ b/app/models/manageiq/providers/vmware/infra_manager.rb @@ -32,8 +32,16 @@ def self.description @description ||= "VMware vCenter".freeze end + def supported_auth_types + %w(default console) + end + + def supports_authentication?(authtype) + supported_auth_types.include?(authtype.to_s) + end + def remote_console_vmrc_acquire_ticket - vim = connect + vim = connect(:auth_type => :console) ticket = vim.acquireCloneTicket # The ticket received is valid for 30 seconds, but we can't disconnect the diff --git a/spec/models/manageiq/providers/vmware/infra_manager_spec.rb b/spec/models/manageiq/providers/vmware/infra_manager_spec.rb index 964952ac8..5f8de1c6f 100644 --- a/spec/models/manageiq/providers/vmware/infra_manager_spec.rb +++ b/spec/models/manageiq/providers/vmware/infra_manager_spec.rb @@ -81,6 +81,48 @@ end end + context "#remote_console_vmrc_acquire_ticket" do + let(:ems) do + _, _, zone = EvmSpecHelper.create_guid_miq_server_zone + FactoryGirl.create(:ems_vmware, :zone => zone) + end + + context "with console credentials" do + before do + ems.authentications << FactoryGirl.create(:authentication, :userid => "root", :password => "vmware") + ems.authentications << FactoryGirl.create(:authentication, :authtype => "console", :userid => "readonly", :password => "1234") + end + + it "uses the console credentials" do + require 'VMwareWebService/MiqVim' + + vim = mock_vim_broker_connection + + expect(MiqVim).to receive(:new).with(ems.hostname, "readonly", "1234").and_return(vim) + expect(vim).to receive(:acquireCloneTicket) + + ems.remote_console_vmrc_acquire_ticket + end + end + + context "without console credentials" do + before do + ems.authentications << FactoryGirl.create(:authentication, :userid => "root", :password => "vmware") + end + + it "uses the default credentials" do + require 'VMwareWebService/MiqVim' + + vim = mock_vim_broker_connection + + expect(MiqVim).to receive(:new).with(ems.hostname, "root", "vmware").and_return(vim) + expect(vim).to receive(:acquireCloneTicket) + + ems.remote_console_vmrc_acquire_ticket + end + end + end + context "handling changes that may require EventCatcher restart" do before(:each) do guid, server, zone = EvmSpecHelper.create_guid_miq_server_zone @@ -123,4 +165,12 @@ def assert_event_catcher_restart_queued expect(q[0].instance_id).to eq(@ems.id) expect(q[0].role).to eq("event") end + + def mock_vim_broker_connection + vim = double(vim) + allow(vim).to receive(:server).and_return(ems.hostname) + allow(vim).to receive(:isVirtualCenter?).and_return(true) + allow(vim).to receive(:apiVersion).and_return(6.0) + vim + end end