def add_collection(collection_name, builder_class = inventory_collection_builder, extra_properties = {}, settings = {}, &block)
      builder = builder_class.prepare_data(collection_name,
                                           self.class,
                                           builder_settings(settings),
                                           &block)

      builder.add_properties(extra_properties) if extra_properties.present?
      builder.evaluate_lambdas!(self)

      collections[collection_name] = builder.to_inventory_collection
    end
def add_collection(collection_name, builder_class = inventory_collection_builder, extra_properties = {}, settings = {}, &block)
      builder = builder_class.prepare_data(collection_name,
                                           self.class,
                                           builder_settings(settings),
                                           &block)

      builder.add_properties(extra_properties) if extra_properties.present?
      builder.evaluate_lambdas!(self)

      collections[collection_name] = builder.to_inventory_collection
    end
@param manager [ManageIQ::Providers::BaseManager] A manager object
 Interface for creating InventoryCollection under @collections

 @param builder_class    [ManageIQ::Providers::Inventory::Persister::Builder] or subclasses
 @param collection_name  [Symbol || Array] used as InventoryCollection:association
 @param extra_properties [Hash]   props from InventoryCollection.initialize list
         - adds/overwrites properties added by builder

 @param settings [Hash] builder settings
         - @see ManageIQ::Providers::Inventory::Persister::Builder.default_options
         - @see make_builder_settings()

 @example
   add_collection(:vms, ManageIQ::Providers::Inventory::Persister::Builder::CloudManager) do |builder|
     builder.add_properties(
       :strategy => :local_db_cache_all,
     )
   )

 @see documentation https://github.com/ManageIQ/guides/tree/master/providers/persister/inventory_collections.md