From 2b794098f263568b2e423e4eae37ba29c02a367f Mon Sep 17 00:00:00 2001 From: akumari Date: Thu, 22 Feb 2024 16:16:05 +0530 Subject: [PATCH] Fixes #37431 - Fix Style/SoleNestedConditional cop --- app/controllers/api/base_controller.rb | 1 - app/controllers/application_controller.rb | 1 - .../foreman/controller/users_mixin.rb | 3 ++- .../compute_resources/foreman/model/ovirt.rb | 4 +--- app/models/concerns/foreman/sti.rb | 8 +++----- app/models/concerns/orchestration.rb | 20 ++++++++----------- app/models/concerns/orchestration/dhcp.rb | 6 ++---- .../strip_leading_and_trailing_dot.rb | 4 ++-- app/models/template.rb | 8 ++------ app/registries/menu/item.rb | 4 +--- .../rss_notifications_checker.rb | 4 +--- lib/net/dhcp/record.rb | 4 +--- 12 files changed, 23 insertions(+), 44 deletions(-) diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index f8ccbdff587..15c3755e9d7 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -308,7 +308,6 @@ def setup_search_options query = " #{Regexp.last_match(1)} = #{value}" params[:search] += query unless params[:search].include? query end - end end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ad5d59b9c95..2bcb720755b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -203,7 +203,6 @@ def setup_search_options params[:search] += query end end - end end end diff --git a/app/controllers/concerns/foreman/controller/users_mixin.rb b/app/controllers/concerns/foreman/controller/users_mixin.rb index 0045acad048..67998784007 100644 --- a/app/controllers/concerns/foreman/controller/users_mixin.rb +++ b/app/controllers/concerns/foreman/controller/users_mixin.rb @@ -13,7 +13,8 @@ def resource_scope(...) protected def clear_session_locale_on_update - if params[:user] && editing_self? + user_params = params[:user] + if user_params && editing_self? && user_params[:locale].blank? # Remove locale from the session when set to "Browser Locale" and editing self session.delete(:locale) if params[:user][:locale].try(:empty?) end diff --git a/app/models/compute_resources/foreman/model/ovirt.rb b/app/models/compute_resources/foreman/model/ovirt.rb index c6fb3db9f59..85b0ea34f5e 100644 --- a/app/models/compute_resources/foreman/model/ovirt.rb +++ b/app/models/compute_resources/foreman/model/ovirt.rb @@ -619,11 +619,9 @@ def create_interfaces(vm, attrs, cluster_id) raise Foreman::Exception.new("Interface network or vnic profile are missing.") if (interface[:network].nil? && interface[:vnic_profile].nil?) interface[:network] = get_ovirt_id(cluster_networks, 'network', interface[:network]) if interface[:network].present? interface[:vnic_profile] = get_ovirt_id(profiles, 'vnic profile', interface[:vnic_profile]) if interface[:vnic_profile].present? - if (interface[:network].present? && interface[:vnic_profile].present?) - unless (profiles.select { |profile| profile.network.id == interface[:network] }).present? + if interface[:network].present? && interface[:vnic_profile].present? && profiles.none? { |profile| profile.network.id == interface[:network] } raise Foreman::Exception.new("Vnic Profile have a different network") end - end vm.add_interface(interface) end vm.interfaces.reload diff --git a/app/models/concerns/foreman/sti.rb b/app/models/concerns/foreman/sti.rb index c1926215f86..2640c26f11b 100644 --- a/app/models/concerns/foreman/sti.rb +++ b/app/models/concerns/foreman/sti.rb @@ -9,11 +9,9 @@ class << base module ClassMethods # ensures that the correct STI object is created when :type is passed. def new(attributes = nil, &block) - if attributes.is_a?(Hash) && (type = attributes.with_indifferent_access.delete(:type)) && !type.empty? - if (klass = type.constantize) != self - raise "Invalid type #{type}" unless klass <= self - return klass.new(attributes, &block) - end + if attributes.is_a?(Hash) && (type = attributes.with_indifferent_access.delete(:type)).present? && (klass = type.constantize) != self + raise "Invalid type #{type}" unless klass <= self + return klass.new(attributes, &block) end super diff --git a/app/models/concerns/orchestration.rb b/app/models/concerns/orchestration.rb index 68cfca69cf2..68cf064ceaf 100644 --- a/app/models/concerns/orchestration.rb +++ b/app/models/concerns/orchestration.rb @@ -170,19 +170,15 @@ def process(queue_name) rollback ensure - unless q.nil? - if processed > 0 - logger.info("Processed #{processed} tasks from queue '#{q.name}', completed #{q.completed.count}/#{q.all.count}") unless q.empty? - # rubocop:disable Rails/FindEach - q.all.each do |task| - msg = "Task '#{task.name}' *#{task.status}*" - if task.status?(:completed) || task.status?(:pending) - logger.debug msg - else - logger.error msg - end + if !q.nil? && (processed > 0) + logger.info("Processed #{processed} tasks from queue '#{q.name}', completed #{q.completed.count}/#{q.all.count}") unless q.empty? + q.all.each do |task| # rubocop:disable Rails/FindEach + msg = "Task '#{task.name}' *#{task.status}*" + if task.status?(:completed) || task.status?(:pending) + logger.debug msg + else + logger.error msg end - # rubocop:enable Rails/FindEach end end end diff --git a/app/models/concerns/orchestration/dhcp.rb b/app/models/concerns/orchestration/dhcp.rb index a7899c1089c..b82ad26d0bc 100644 --- a/app/models/concerns/orchestration/dhcp.rb +++ b/app/models/concerns/orchestration/dhcp.rb @@ -173,12 +173,10 @@ def dhcp_update_required? (!old.build? && build? && !all_dhcp_records_valid?)) # Handle jumpstart # TODO, abstract this way once interfaces are fully used - if is_a?(Host::Base) && jumpstart? - if !old.build? || (old.medium != medium || old.arch != arch) || - (os && old.os && (old.os.name != os.name || old.os != os)) + if is_a?(Host::Base) && jumpstart? && (!old.build? || (old.medium != medium || old.arch != arch) || + (os && old.os && (old.os.name != os.name || old.os != os))) return true end - end false end diff --git a/app/models/concerns/strip_leading_and_trailing_dot.rb b/app/models/concerns/strip_leading_and_trailing_dot.rb index fa1c8492182..4202b17e1c1 100644 --- a/app/models/concerns/strip_leading_and_trailing_dot.rb +++ b/app/models/concerns/strip_leading_and_trailing_dot.rb @@ -22,8 +22,8 @@ module StripLeadingAndTrailingDot def strip_dots changes.each do |column, values| # return string if RuntimeError: can't modify frozen String - if values.last.is_a?(String) && dot_strip_attrs.include?(column) - send("#{column}=", values.last.gsub(/(^\.|\.$)/, '')) if respond_to?("#{column}=") + if values.last.is_a?(String) && dot_strip_attrs.include?(column) && respond_to?("#{column}=") + send("#{column}=", values.last.gsub(/(^\.|\.$)/, '')) end end end diff --git a/app/models/template.rb b/app/models/template.rb index ceba4cd2abb..1a7faa2b2ec 100644 --- a/app/models/template.rb +++ b/app/models/template.rb @@ -299,17 +299,13 @@ def template_changes actual_changes = changes # Locked & Default are Special - if actual_changes.include?('locked') && !modify_locked - if User.current.nil? || !User.current.can?("lock_#{self.class.to_s.underscore.pluralize}", self) + if actual_changes.include?('locked') && !modify_locked && (User.current.nil? || !User.current.can?("lock_#{self.class.to_s.underscore.pluralize}", self)) errors.add(:base, _("You are not authorized to lock templates.")) end - end - if actual_changes.include?('default') && !modify_default - if User.current.nil? || !(User.current.can?(:create_organizations) || User.current.can?(:create_locations)) + if actual_changes.include?('default') && !modify_default && (User.current.nil? || !(User.current.can?(:create_organizations) || User.current.can?(:create_locations))) errors.add(:base, _("You are not authorized to make a template default.")) end - end # API request can be changing the locked content (not allowed_changes) but the locked attribute at the same # time, so if changes include locked attribute (template is being locked or unlocked), we skip the lock error diff --git a/app/registries/menu/item.rb b/app/registries/menu/item.rb index adfc7756e2a..7067ce73d7a 100644 --- a/app/registries/menu/item.rb +++ b/app/registries/menu/item.rb @@ -23,9 +23,7 @@ def initialize(name, options) end def to_hash - if @condition.present? - return unless @condition.call - end + return if @condition.present? && !@condition.call {type: :item, exact: @exact, html_options: @html_options, name: @caption || @name, url: url} if authorized? end diff --git a/app/services/ui_notifications/rss_notifications_checker.rb b/app/services/ui_notifications/rss_notifications_checker.rb index a804525adc6..a6ab85c966f 100644 --- a/app/services/ui_notifications/rss_notifications_checker.rb +++ b/app/services/ui_notifications/rss_notifications_checker.rb @@ -47,9 +47,7 @@ def deliver! feed.items[0, @latest_posts].each do |feed_item| item = Item.new(feed_item) blueprint = rss_notification_blueprint - if notification_already_exists?(item) - next unless @force_repost - end + next if notification_already_exists?(item) && !@force_repost Notification.create( :initiator => User.anonymous_admin, :audience => @audience, diff --git a/lib/net/dhcp/record.rb b/lib/net/dhcp/record.rb index 431adcf982b..6c613a369c2 100644 --- a/lib/net/dhcp/record.rb +++ b/lib/net/dhcp/record.rb @@ -74,9 +74,7 @@ def eql_for_conflicts?(other) # If we're converting an 'ad-hoc' lease created by a host booting outside of Foreman's knowledge, # then :hostname will be blank on the incoming lease - if the ip/mac still match, then this # isn't a conflict. Only applicable on legacy proxy API without "type" attribute. - if legacy_dhcp_api? - to_compare << :hostname if other.attrs[:hostname].present? && attrs[:hostname].present? - end + to_compare << :hostname if legacy_dhcp_api? && other.attrs[:hostname].present? && attrs[:hostname].present? logger.debug "Comparing #{attrs.values_at(*to_compare)} == #{other.attrs.values_at(*to_compare)}" attrs.values_at(*to_compare) == other.attrs.values_at(*to_compare)