ManageIQ/manageiq-automation_engine

View on GitHub
app/models/miq_ae_yaml_import_fs.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class MiqAeYamlImportFs < MiqAeYamlImport
  def domain_folder(domain_name)
    File.join(@options['import_dir'], domain_name)
  end

  def read_domain_yaml(dom_folder, domain_name)
    domain_yaml_filename = File.join(dom_folder, DOMAIN_YAML_FILENAME)
    unless File.exist?(domain_yaml_filename)
      _log.info("domain: <#{domain_name}> yaml file not found: <#{domain_yaml_filename}>")
      raise MiqAeException::NamespaceNotFound, "domain: #{domain_name} yaml file not found: #{domain_yaml_filename}"
    end
    load_file(domain_yaml_filename)
  end

  def domain_files(domain)
    Dir.glob(File.join(@options['import_dir'], domain, DOMAIN_YAML_FILENAME)).sort
  end

  def namespace_files(parent_folder)
    Dir.glob(File.join(parent_folder, "*", NAMESPACE_YAML_FILENAME)).sort
  end

  def class_files(namespace_folder)
    Dir.glob(File.join(namespace_folder, "*", CLASS_YAML_FILENAME)).sort
  end

  def load_class_schema(class_folder)
    raise MiqAeException::DirectoryNotFound, "Folder [#{class_folder}] not found" \
      unless File.directory?(class_folder)

    load_file(File.join(class_folder, CLASS_YAML_FILENAME))
  end

  def get_instance_files(class_folder)
    Dir.glob(File.join(class_folder, '*.yaml')).sort
  end

  def get_method_files(class_folder)
    Dir.glob(File.join(File.join(class_folder, METHOD_FOLDER_NAME), '*.yaml')).sort
  end

  def load_file(file)
    YAML.load_file(file)
  end

  def load_method_ruby(method_file_name)
    ruby_method_filename = method_file_name.gsub('.yaml', '.rb')
    File.read(ruby_method_filename) if File.exist?(ruby_method_filename)
  end
end