Skip to content

Commit 2064b7d

Browse files
committed
move supports standby from core to vmware
1 parent 7436fe5 commit 2064b7d

File tree

2 files changed

+60
-0
lines changed
  • app/models/manageiq/providers/vmware/infra_manager
  • spec/models/manageiq/providers/vmware/infra_manager

2 files changed

+60
-0
lines changed

app/models/manageiq/providers/vmware/infra_manager/host.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,29 @@ class ManageIQ::Providers::Vmware::InfraManager::Host < ::Host
22
include ManageIQ::Providers::Vmware::InfraManager::VimConnectMixin
33
include ManageIQ::Providers::Vmware::InfraManager::EmsRefObjMixin
44

5+
# overrides base start to support "standby" powerstate
6+
supports :start do
7+
if !supports?(:ipmi)
8+
unsupported_reason_add(:start, unsupported_reason(:ipmi))
9+
elsif %w[off standby].exclude?(power_state)
10+
unsupported_reason_add(:start, _("The Host is not in power state off or standby"))
11+
end
12+
end
13+
514
def connect(options = {})
615
vim_connect(options)
716
end
817

18+
def start
19+
if verbose_supports?(:start)
20+
if power_state == 'standby'
21+
check_policy_prevent("request_host_start", "vim_power_up_from_standby")
22+
else
23+
super
24+
end
25+
end
26+
end
27+
928
def provider_object(connection)
1029
api_type = connection.about["apiType"]
1130
mor =

spec/models/manageiq/providers/vmware/infra_manager/host_spec.rb

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,48 @@
11
describe ManageIQ::Providers::Vmware::InfraManager::Host do
2+
include Spec::Support::SupportsHelper
3+
24
let(:ems) { FactoryBot.create(:ems_vmware) }
35
let(:host) { FactoryBot.create(:host_vmware, :ext_management_system => ems) }
46

7+
describe "supports :start" do
8+
let(:host) { FactoryBot.create(:host_vmware, :ext_management_system => ems, :power_state => power_state) }
9+
10+
before { EvmSpecHelper.local_miq_server }
11+
12+
context "when it does not support ipmi" do
13+
before do
14+
stub_supports_all_others(Host)
15+
stub_supports_not(Host, :ipmi)
16+
end
17+
18+
let(:power_state) { "off" }
19+
it { expect(host.supports?(:start)).to be_falsey }
20+
end
21+
22+
context "when it supports ipmi" do
23+
before do
24+
stub_supports_all_others(Host)
25+
stub_supports(Host, :ipmi)
26+
end
27+
28+
context "when off" do
29+
let(:power_state) { "off" }
30+
it { expect(host.supports?(:start)).to be_truthy }
31+
end
32+
33+
context "when on" do
34+
let(:power_state) { "on" }
35+
it { expect(host.supports?(:start)).to be_falsey }
36+
end
37+
38+
# new in this provider
39+
context "when standby" do
40+
let(:power_state) { "standby" }
41+
it { expect(host.supports?(:start)).to be_truthy }
42+
end
43+
end
44+
end
45+
546
context "#reserve_next_available_vnc_port" do
647
context "without EMS defaults set" do
748
let(:ems) { FactoryBot.create(:ems_vmware, :host_default_vnc_port_start => nil, :host_default_vnc_port_end => nil) }

0 commit comments

Comments
 (0)