Skip to content

Commit

Permalink
Merge pull request #17931 from agrare/move_graph_refresh_settings_to_ems
Browse files Browse the repository at this point in the history
Move Graph Refresh Settings to EMS
  • Loading branch information
bdunne authored Aug 31, 2018
2 parents eaef4fb + 0aca388 commit 2f9a1dd
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 19 deletions.
8 changes: 8 additions & 0 deletions app/models/ext_management_system.rb
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,14 @@ def self.display_name(number = 1)
n_('Manager', 'Managers', number)
end

def inventory_object_refresh?
Settings.ems_refresh.fetch_path(emstype, :inventory_object_refresh)
end

def allow_targeted_refresh?
Settings.ems_refresh.fetch_path(emstype, :allow_targeted_refresh)
end

private

def build_connection(options = {})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def collect_inventory_for_targets(ems, targets)

_log.info("Filtering inventory for #{target.class} [#{target_name}] id: [#{target.id}]...")

if inventory_object_refresh?
if ems.inventory_object_refresh?
inventory = builder_class_for(ems.class).build_inventory(ems, target)
end

Expand All @@ -62,7 +62,7 @@ def parse_targeted_inventory(ems, _target, inventory)
log_header = format_ems_for_logging(ems)
_log.debug("#{log_header} Parsing inventory...")
hashes_or_persister, = Benchmark.realtime_block(:parse_inventory) do
if inventory_object_refresh?
if ems.inventory_object_refresh?
inventory.parse
else
parsed, _ = Benchmark.realtime_block(:parse_legacy_inventory) { parse_legacy(ems) }
Expand All @@ -78,8 +78,9 @@ def parse_targeted_inventory(ems, _target, inventory)
# ManagerRefresh::TargetCollection. This way we can do targeted refresh of all queued targets in 1 refresh
def preprocess_targets
@targets_by_ems_id.each do |ems_id, targets|
ems = @ems_by_ems_id[ems_id]

if targets.any? { |t| t.kind_of?(ExtManagementSystem) }
ems = @ems_by_ems_id[ems_id]
targets_for_log = targets.map { |t| "#{t.class} [#{t.name}] id [#{t.id}] " }
_log.info("Defaulting to full refresh for EMS: [#{ems.name}], id: [#{ems.id}], from targets: #{targets_for_log}") if targets.length > 1
end
Expand All @@ -89,7 +90,7 @@ def preprocess_targets
all_targets, sub_ems_targets = targets.partition { |x| x.kind_of?(ExtManagementSystem) }

unless sub_ems_targets.blank?
if allow_targeted_refresh?
if ems.allow_targeted_refresh?
# We can disable targeted refresh with a setting, then we will just do full ems refresh on any event
ems_event_collection = ManagerRefresh::TargetCollection.new(:targets => sub_ems_targets,
:manager_id => ems_id)
Expand Down
10 changes: 1 addition & 9 deletions app/models/manageiq/providers/base_manager/refresher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def collect_inventory_for_targets(ems, targets)
# override this method and return an array of:
# [[target1, inventory_for_target1], [target2, inventory_for_target2]]

return [[ems, nil]] unless inventory_object_refresh?
return [[ems, nil]] unless ems.inventory_object_refresh?

provider_module = ManageIQ::Providers::Inflector.provider_module(ems.class).name

Expand Down Expand Up @@ -252,14 +252,6 @@ def refresher_type
def format_ems_for_logging(ems)
"EMS: [#{ems.name}], id: [#{ems.id}]"
end

def inventory_object_refresh?
refresher_options.try(:[], :inventory_object_refresh)
end

def allow_targeted_refresh?
refresher_options.try(:[], :allow_targeted_refresh)
end
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -51,16 +51,16 @@ def poll_clone_complete
clone_task_ref = phase_context.delete(:clone_task_ref)
phase_context[:new_vm_ems_ref] = clone_task_ref

manager_settings = Settings.ems_refresh[source.ext_management_system.class.ems_type]
if manager_settings && manager_settings[:inventory_object_refresh] && manager_settings[:allow_targeted_refresh]
manager = source.ext_management_system
if manager.inventory_object_refresh? && manager.allow_targeted_refresh?
# Queue new targeted refresh if allowed
vm_target = ManagerRefresh::Target.new(:manager => source.ext_management_system,
vm_target = ManagerRefresh::Target.new(:manager => manager,
:association => :vms,
:manager_ref => {:ems_ref => clone_task_ref})
EmsRefresh.queue_refresh(vm_target)
else
# Otherwise queue a full refresh
EmsRefresh.queue_refresh(source.ext_management_system)
EmsRefresh.queue_refresh(manager)
end
signal :poll_destination_in_vmdb
else
Expand Down
3 changes: 1 addition & 2 deletions app/models/orchestration_stack.rb
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,7 @@ def self.refresh_ems(manager_id, manager_ref)
raise _("Provider failed last authentication check")
end

manager_settings = Settings.ems_refresh[manager.class.ems_type]
if manager_settings && manager_settings[:inventory_object_refresh] && manager_settings[:allow_targeted_refresh]
if manager.inventory_object_refresh? && manager.allow_targeted_refresh?
# Queue new targeted refresh if allowed
orchestration_stack_target = ManagerRefresh::Target.new(:manager => manager,
:association => :orchestration_stacks,
Expand Down

0 comments on commit 2f9a1dd

Please sign in to comment.