class HammerCLICsv::CsvCommand::OperatingSystemsCommand

Constants

ARCHITECTURES
DESCRIPTION
FAMILY
MEDIA
PARAMETERS
PARTITION_TABLES
PASSWORD_HASH
PROVISIONING_TEMPLATES

Public Instance Methods

create_operatingsystems_from_csv(line) click to toggle source
# File lib/hammer_cli_csv/operating_systems.rb, line 51
def create_operatingsystems_from_csv(line)
  params =  {
    'operatingsystem' => {
      'family' => line[FAMILY],
      'description' => line[DESCRIPTION],
      'password_hash' => line[PASSWORD_HASH]
    }
  }
  params['operatingsystem']['architecture_ids'] = collect_column(line[ARCHITECTURES]) do |name|
    foreman_architecture(:name => name)
  end
  # TODO: http://projects.theforeman.org/issues/12919
  #params['operatingsystem']['provisioning_template_ids'] = collect_column(line[PROVISIONING_TEMPLATES]) do |name|
  #  foreman_provisioning_template(:name => name)
  #end
  # TODO: http://projects.theforeman.org/issues/12920
  #params['operatingsystem']['os_parameters?'] = collect_column(line[PARAMETERS]) do |name_value|
  #  ????
  #end
  count(line[COUNT]).times do |number|
    name = namify(line[NAME], number)
    (osname, major, minor) = split_os_name(name)
    params['operatingsystem']['name'] = osname
    params['operatingsystem']['major'] = major
    params['operatingsystem']['minor'] = minor
    if !@existing.include? name
      print "Creating operating system '#{name}'..." if option_verbose?
      @api.resource(:operatingsystems).call(:create, params)
    else
      print "Updating operating system '#{name}'..." if option_verbose?
      params['id'] = @existing[name]
      @api.resource(:operatingsystems).call(:update, params)
    end
    print "done\n" if option_verbose?
  end
end
export(csv) click to toggle source
# File lib/hammer_cli_csv/operating_systems.rb, line 16
def export(csv)
  csv << [NAME, DESCRIPTION, FAMILY, PASSWORD_HASH, PARTITION_TABLES, ARCHITECTURES, MEDIA,
          PROVISIONING_TEMPLATES, PARAMETERS]
  @api.resource(:operatingsystems).call(:index, {
      :per_page => 999999,
      :search => option_search
  })['results'].each do |operatingsystem_id|
    operatingsystem = @api.resource(:operatingsystems).call(:show, {:id => operatingsystem_id['id']})
    name = build_os_name(operatingsystem['name'], operatingsystem['major'], operatingsystem['minor'])
    description = operatingsystem['description']
    family = operatingsystem['family']
    password_hash = operatingsystem['password_hash']
    partition_tables = export_column(operatingsystem, 'ptables', 'name')
    architectures = export_column(operatingsystem, 'architectures', 'name')
    media = export_column(operatingsystem, 'media', 'name')
    partition_tables = export_column(operatingsystem, 'ptables', 'name')
    parameters = export_column(operatingsystem, 'parameters') do |parameter|
      "#{parameter['name']}|#{parameter['value']}"
    end
    csv << [name, description, family, password_hash, partition_tables, architectures,
            media, partition_tables, parameters]
  end
end
import() click to toggle source
# File lib/hammer_cli_csv/operating_systems.rb, line 40
def import
  @existing = {}
  @api.resource(:operatingsystems).call(:index, {:per_page => 999999})['results'].each do |operatingsystem|
    @existing[build_os_name(operatingsystem['name'], operatingsystem['major'], operatingsystem['minor'])] = operatingsystem['id'] if operatingsystem
  end

  thread_import do |line|
    create_operatingsystems_from_csv(line)
  end
end