inventory_refresh 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ade3208f2b15b5f3ddd1eb2ba062bc011ba4ce8fbd4bbc838ba9ccef62fb19f
4
- data.tar.gz: 6aecb2c6ea69ba72b48819eb8a4af6cbffa9f3c9d475bcca8c88e6e5f5fa0cf1
3
+ metadata.gz: 2795b6d1400c002ec2943be86f275bd456771a8090135420fdeaa085592be302
4
+ data.tar.gz: e16e6285f5f7a623c6452c3a4559c36e0f6d402ebb17822425e15181fc44b084
5
5
  SHA512:
6
- metadata.gz: e2d87b6841db8fd728269e4234ae05ca0c80a5612980ee08b83815d626b2945bca34644a972133eedb8f76bce19c627cc93a3d812a41c13edd8d74c9ff5d7175
7
- data.tar.gz: c811d7fad848a207228595ede6cdb251a7096192ae5984bf3be0af667956553035c22c45ece7b7962807339b9e45cf06ed4f823561a7c3ccd40fa9a631db1c50
6
+ metadata.gz: 78755d1c33a17c1f3f9793b3e16576a4981cea708f878f1fcad3643540d6511077d6bd8fe0b01d17279e8056ce0f7df0c871ecf5dec982a2ff4d8be62124cab9
7
+ data.tar.gz: 80c8475497a20a67a3b7915d50f2072ed1b2a2e44ec74c6a744aa87d5f83b5a968eef4cceabd0ab6971dc701aaa5a0b97a0da03db169c2d235071168c7af1dcf
@@ -195,7 +195,7 @@ module InventoryRefresh
195
195
  # TODO(lsmola) do we need some production logging too? Maybe the refresh log level could drive this
196
196
  # Let' do this really slick development and test env, but disable for production, since the checks are pretty
197
197
  # slow.
198
- # TODO: return if Rails.env.production?
198
+ return unless inventory_collection.assert_graph_integrity
199
199
 
200
200
  if manager_uuid.kind_of?(InventoryRefresh::InventoryCollection::Reference)
201
201
  # InventoryRefresh::InventoryCollection::Reference has been already asserted, skip
@@ -87,7 +87,8 @@ module InventoryRefresh
87
87
  :inventory_object_attributes, :name, :saver_strategy, :targeted_scope, :default_values,
88
88
  :targeted_arel, :targeted, :manager_ref_allowed_nil, :use_ar_object,
89
89
  :created_records, :updated_records, :deleted_records,
90
- :custom_reconnect_block, :batch_extra_attributes, :references_storage
90
+ :custom_reconnect_block, :batch_extra_attributes, :references_storage,
91
+ :assert_graph_integrity
91
92
 
92
93
  delegate :<<,
93
94
  :build,
@@ -409,6 +410,8 @@ module InventoryRefresh
409
410
  # db. These extra attributes might be a product of :use_ar_object assignment and we need to specify them
410
411
  # manually, if we want to use a batch saving strategy and we have models that populate attributes as a side
411
412
  # effect.
413
+ # @param assert_graph_integrity [Boolean] Default false. If true then extra checks for graph integrity will be
414
+ # performed and an exception will be raised if an error is found.
412
415
  def initialize(model_class: nil, manager_ref: nil, association: nil, parent: nil, strategy: nil,
413
416
  custom_save_block: nil, delete_method: nil, dependency_attributes: nil,
414
417
  attributes_blacklist: nil, attributes_whitelist: nil, complete: nil, update_only: nil,
@@ -416,7 +419,7 @@ module InventoryRefresh
416
419
  inventory_object_attributes: nil, name: nil, saver_strategy: nil,
417
420
  parent_inventory_collections: nil, manager_uuids: [], all_manager_uuids: nil, targeted_arel: nil,
418
421
  targeted: nil, manager_ref_allowed_nil: nil, secondary_refs: {}, use_ar_object: nil,
419
- custom_reconnect_block: nil, batch_extra_attributes: [])
422
+ custom_reconnect_block: nil, batch_extra_attributes: [], assert_graph_integrity: nil)
420
423
  @model_class = model_class
421
424
  @manager_ref = manager_ref || [:ems_ref]
422
425
  @secondary_refs = secondary_refs
@@ -438,6 +441,7 @@ module InventoryRefresh
438
441
  @saver_strategy = process_saver_strategy(saver_strategy)
439
442
  @use_ar_object = use_ar_object || false
440
443
  @batch_extra_attributes = batch_extra_attributes
444
+ @assert_graph_integrity = assert_graph_integrity.nil? ? false : assert_graph_integrity
441
445
 
442
446
  @manager_ref_allowed_nil = manager_ref_allowed_nil || []
443
447
 
@@ -247,7 +247,7 @@ module InventoryRefresh::SaveCollection
247
247
  # Change the InventoryCollection's :association or :arel parameter to return distinct results. The :through
248
248
  # relations can return the same record multiple times. We don't want to do SELECT DISTINCT by default, since
249
249
  # it can be very slow.
250
- if false # TODO: Rails.env.production?
250
+ unless inventory_collection.assert_graph_integrity
251
251
  logger.warn("Please update :association or :arel for #{inventory_collection} to return a DISTINCT result. "\
252
252
  " The duplicate value is being ignored.")
253
253
  return false
@@ -273,7 +273,7 @@ module InventoryRefresh::SaveCollection
273
273
  subject = "#{hash} of #{inventory_collection} because of missing foreign key #{x} for "\
274
274
  "#{inventory_collection.parent.class.name}:"\
275
275
  "#{inventory_collection.parent.try(:id)}"
276
- if false # TODO: Rails.env.production?
276
+ unless inventory_collection.assert_graph_integrity
277
277
  logger.warn("Referential integrity check violated, ignoring #{subject}")
278
278
  return false
279
279
  else
@@ -1,3 +1,3 @@
1
1
  module InventoryRefresh
2
- VERSION = "0.1.1".freeze
2
+ VERSION = "0.1.2".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inventory_refresh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ManageIQ Developers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-13 00:00:00.000000000 Z
11
+ date: 2019-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord