class Oneds::Mrproper::Cleaners::DirectoryCleaner
Attributes
datastore_manager[R]
Public Class Methods
new(client, dry_run)
click to toggle source
Calls superclass method
Oneds::Mrproper::Cleaners::Cleaner::new
# File lib/oneds/mrproper/cleaners/directory_cleaner.rb, line 7 def initialize(client, dry_run) super(dry_run) @datastore_manager = Oneds::Mrproper::One::Managers::DatastoreManager.new client end
Public Instance Methods
clean()
click to toggle source
# File lib/oneds/mrproper/cleaners/directory_cleaner.rb, line 13 def clean logger.info 'Cleaning forgotten datastore directories' datastores = datastore_manager.datastore_paths.sort base_path = File.dirname(datastores.first) logger.debug "Datasores registered in OpenNebula: #{datastores.inspect}" directories = Dir[File.join(base_path, '*')].sort logger.debug "Directories present on filesystem: #{directories.inspect}" dirs_to_remove = directories - datastores logger.debug "Directories that will be removed: #{dirs_to_remove.inspect}" remove_directories dirs_to_remove end
Private Instance Methods
remove_directories(directories)
click to toggle source
# File lib/oneds/mrproper/cleaners/directory_cleaner.rb, line 29 def remove_directories(directories) directories.each do |dir| unless File.directory? dir logger.warn "Skipping file #{dir.inspect}, not a directory" next end unless Dir[File.join(dir, '*')].empty? logger.warn "Skipping not empty directory #{dir.inspect} which is not registered in OpenNebula" next end logger.info "Removing empty directory #{dir.inspect}" FileUtils.rm_r dir unless dry_run end end