diff --git a/app/models/concerns/fog_extensions/vsphere/server.rb b/app/models/concerns/fog_extensions/vsphere/server.rb index 29d995418d1178d7e6774a9656153c9ef2f1910b..1fb55a5ab745e8f4c2f6e41e3fdfe6974718f311 100644 --- a/app/models/concerns/fog_extensions/vsphere/server.rb +++ b/app/models/concerns/fog_extensions/vsphere/server.rb @@ -37,16 +37,16 @@ module FogExtensions def select_nic(fog_nics, nic) nic_attrs = nic.compute_attributes - all_networks = service.raw_networks(datacenter) - vm_network = all_networks.detect { |network| nic_attrs['network'] && [network.name, network.try(:key)].include?(nic_attrs['network']) } - vm_network ||= all_networks.detect { |network| network._ref == nic_attrs['network'] } + all_networks = service.list_networks(datacenter: datacenter) + vm_network = all_networks.detect { |network| nic_attrs['network'] && [network[:name], network[:key]].compact.include?(nic_attrs['network']) } + vm_network ||= all_networks.detect { |network| network[:_ref] == nic_attrs['network'] } unless vm_network Rails.logger.info "Could not find Vsphere network for #{nic_attrs.inspect}" return end - selected_nic = fog_nics.detect { |fn| fn.network == vm_network.name } # grab any nic on the same network + selected_nic = fog_nics.detect { |fn| fn.network == vm_network[:name] } # grab any nic on the same network if selected_nic.nil? && vm_network.respond_to?(:key) - selected_nic = fog_nics.detect { |fn| fn.network == vm_network.key } # try to match on portgroup + selected_nic = fog_nics.detect { |fn| fn.network == vm_network[:key] } # try to match on portgroup end selected_nic end diff --git a/bundler.d/vmware.rb b/bundler.d/vmware.rb index 823ee7efd80a5ea5fc21636e6154e1ab99904890..9cc568a8c27eb8597f0f866a2447512ad7050db4 100644 --- a/bundler.d/vmware.rb +++ b/bundler.d/vmware.rb @@ -1,3 +1,3 @@ group :vmware do - gem 'fog-vsphere', '>= 2.1.1' + gem 'fog-vsphere', '>= 2.3.0' end