Skip to content

Commit e10f2ad

Browse files
committed
Update evm_server#set_local_server_vm to just use ids
- This is still using length - since we only want 1 query - This is now just bringing back ids - added specs around this
1 parent f567b12 commit e10f2ad

File tree

2 files changed

+45
-5
lines changed

2 files changed

+45
-5
lines changed

lib/workers/evm_server.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,11 +186,11 @@ def save_local_network_info
186186

187187
def set_local_server_vm
188188
if @current_server.vm_id.nil?
189-
vms = Vm.find_vms_by_mac_address_and_hostname_and_ipaddress(@current_server.mac_address, @current_server.hostname, @current_server.ipaddress)
190-
if vms.length > 1
191-
_log.warn("Found multiple Vms that may represent this MiqServer: #{vms.collect(&:id).sort.inspect}")
192-
elsif vms.length == 1
193-
@current_server.update(:vm_id => vms.first.id)
189+
vm_ids = find_vms_by_mac_address_and_hostname_and_ipaddress(@current_server.mac_address, @current_server.hostname, @current_server.ipaddress).pluck(:id)
190+
if vm_ids.length > 1
191+
_log.warn("Found multiple Vms that may represent this MiqServer: #{vm_ids.sort.inspect}")
192+
elsif vm_ids.length == 1
193+
@current_server.update(:vm_id => vm_ids.first)
194194
end
195195
end
196196
end

spec/lib/workers/evm_server_spec.rb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,46 @@
198198
let(:vm2) { FactoryBot.create(:vm_vmware, :hardware => FactoryBot.create(:hardware, :networks => [vm2_network])) }
199199
let(:vm3) { FactoryBot.create(:vm_vmware, :hardware => FactoryBot.create(:hardware, :guest_devices => [vm3_device])) }
200200

201+
describe "#set_local_vserver_vm (private)" do
202+
let!(:miq_server) { EvmSpecHelper.local_miq_server }
203+
let(:evm_server) { EvmServer.new }
204+
205+
# Basically stock, just ensure podified environment doesn't modify this test.
206+
before { allow(evm_server).to receive(:servers_from_db).and_return([miq_server]) }
207+
208+
it "handles no matching servers" do
209+
vm1
210+
vm2
211+
212+
# sets evm_server.current_server
213+
evm_server.send(:impersonate_server, miq_server)
214+
evm_server.send(:set_local_server_vm)
215+
expect(miq_server.reload.vm_id).to eq(nil)
216+
end
217+
218+
it "finds local server (by mac_address)" do
219+
vm1
220+
vm2
221+
miq_server.update(:hostname => vm1_network.hostname)
222+
223+
evm_server.send(:impersonate_server, miq_server)
224+
evm_server.send(:set_local_server_vm)
225+
expect(miq_server.reload.vm_id).to eq(vm1.id)
226+
end
227+
228+
it "finds multiple servers" do
229+
vm1
230+
vm2
231+
vm3
232+
233+
miq_server.update(:hostname => vm1_network.hostname, :ipaddress => vm2_network.ipaddress)
234+
235+
evm_server.send(:impersonate_server, miq_server)
236+
evm_server.send(:set_local_server_vm)
237+
expect(miq_server.reload.vm_id).to eq(nil)
238+
end
239+
end
240+
201241
context "#find_vms_by_mac_address_and_hostname_and_ipaddress (private)" do
202242
subject { described_class.new }
203243

0 commit comments

Comments
 (0)