From 04f82ac2f4601144370d760d6f5d221f1cc88ca5 Mon Sep 17 00:00:00 2001 From: Ladislav Smola Date: Fri, 28 Jul 2017 17:25:12 +0200 Subject: [PATCH] Allow to run post processing job for ManagerRefresh (Graph Refresh) Allow to run post processing job for ManagerRefresh (Graph Refresh). This post processing can leverage existing data in the InventoryCollection and especially each collection's created_records, updated_records and deleted_records, to queue up specific post processing jobs. --- .../ems_refresh/refreshers/ems_refresher_mixin.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb b/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb index c08e6f2e59e..cdf99c459e9 100644 --- a/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb +++ b/app/models/ems_refresh/refreshers/ems_refresher_mixin.rb @@ -69,10 +69,11 @@ def preprocess_targets end def refresh_targets_for_ems(ems, targets) - # handle a 3-part inventory refresh process + # handle a 4-part inventory refresh process # 1. collect inventory # 2. parse inventory # 3. save inventory + # 4. post process inventory (only when using InventoryCollections) log_header = format_ems_for_logging(ems) targets_with_inventory, _ = Benchmark.realtime_block(:collect_inventory_for_targets) do @@ -90,9 +91,20 @@ def refresh_targets_for_ems(ems, targets) Benchmark.realtime_block(:save_inventory) { save_inventory(ems, target, hashes) } _log.info "#{log_header} Refreshing target #{target.class} [#{target.name}] id [#{target.id}]...Complete" + + if hashes.kind_of?(Array) + _log.info "#{log_header} ManagerRefresh Post Processing #{target.class} [#{target.name}] id [#{target.id}]..." + # We have array of InventoryCollection, we want to use that data for post refresh + Benchmark.realtime_block(:manager_refresh_post_processing) { manager_refresh_post_processing(ems, target, hashes) } + _log.info "#{log_header} ManagerRefresh Post Processing #{target.class} [#{target.name}] id [#{target.id}]...Complete" + end end end + def manager_refresh_post_processing(_ems, _target, _inventory_collections) + # Implement post refresh actions in a specific refresher + end + def collect_inventory_for_targets(ems, targets) # TODO: implement this method in all refreshers and remove from here # legacy refreshers collect inventory during the parse phase so the