theforeman/foreman_maintain

View on GitHub
definitions/features/pulpcore_database.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Features::PulpcoreDatabase < ForemanMaintain::Feature
  PULPCORE_DB_CONFIG = '/etc/pulp/settings.py'.freeze

  include ForemanMaintain::Concerns::BaseDatabase
  include ForemanMaintain::Concerns::DirectoryMarker
  include ForemanMaintain::Concerns::PulpCommon

  metadata do
    label :pulpcore_database

    confine do
      file_nonzero?(PULPCORE_DB_CONFIG)
    end
  end

  def configuration
    @configuration || load_configuration
  end

  def services
    [
      system_service('postgresql', 10, :component => 'pulpcore',
        :db_feature => feature(:pulpcore_database)),
    ]
  end

  private

  # rubocop:disable Metrics/AbcSize
  def load_configuration
    full_config = File.read(PULPCORE_DB_CONFIG).split(/[\s,'":]/).reject(&:empty?)

    @configuration = {}
    @configuration['adapter'] = 'postgresql'
    @configuration['host'] = full_config[full_config.index('HOST') + 1]
    @configuration['port'] = full_config[full_config.index('PORT') + 1]
    @configuration['database'] = full_config[full_config.index('NAME') + 1]
    @configuration['username'] = full_config[full_config.index('USER') + 1]
    @configuration['password'] = full_config[full_config.index('PASSWORD') + 1]
    @configuration
  end
  # rubocop:enable Metrics/AbcSize
end