From 17a4c6adb2e7e79df15e61fb2353450be6ebcdc8 Mon Sep 17 00:00:00 2001 From: Adam Grare Date: Tue, 12 Mar 2024 10:54:13 -0400 Subject: [PATCH] Only check for duplicate endpoints for CloudManagers Fix hostname_uniqueness_valid? failing if an `Openstack::InfraManager` has the same connection details as an `Openstack::CloudManager` --- .../providers/openstack/cloud_manager.rb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/models/manageiq/providers/openstack/cloud_manager.rb b/app/models/manageiq/providers/openstack/cloud_manager.rb index dd477de8..cc18be9b 100644 --- a/app/models/manageiq/providers/openstack/cloud_manager.rb +++ b/app/models/manageiq/providers/openstack/cloud_manager.rb @@ -518,14 +518,15 @@ def hostname_uniqueness_valid? return unless hostname_required? return unless hostname.present? # Presence is checked elsewhere - existing_providers = Endpoint.where(:hostname => hostname.downcase) - .where.not(:resource_id => id).includes(:resource) - .select do |endpoint| - unless endpoint.resource.nil? - endpoint.resource.uid_ems == keystone_v3_domain_id && - endpoint.resource.provider_region == provider_region - end - end + existing_providers = + self.class + .joins(:endpoints) + .where.not(:id => id) + .where( + :endpoints => {:hostname => hostname.downcase}, + :uid_ems => keystone_v3_domain_id, + :provider_region => provider_region + ) errors.add(:hostname, "has already been taken") if existing_providers.any? end