class HammerCLICsv::CsvCommand::SyncPlansCommand

Constants

DESCRIPTION
ENABLED
INTERVAL
ORGANIZATION
PRODUCTS
STARTDATE

Public Instance Methods

create_content_hosts_from_csv(line) click to toggle source
# File lib/hammer_cli_csv/sync_plans.rb, line 51
def create_content_hosts_from_csv(line)
  return if option_organization && line[ORGANIZATION] != option_organization

  if !@existing[line[ORGANIZATION]]
    @existing[line[ORGANIZATION]] = {}
    @api.resource(:sync_plans).call(:index, {
        'per_page' => 999999,
        'organization_id' => foreman_organization(:name => line[ORGANIZATION])
    })['results'].each do |sync_plan|
      @existing[line[ORGANIZATION]][sync_plan['name']] = sync_plan['id']
    end
  end

  count(line[COUNT]).times do |number|
    name = namify(line[NAME], number)
    if !@existing[line[ORGANIZATION]].include? name
      print "Creating sync plan '#{name}'..." if option_verbose?
      @api.resource(:sync_plans).call(:create, {
          'organization_id' => foreman_organization(:name => line[ORGANIZATION]),
          'name' => name,
          'description' => line[DESCRIPTION],
          'enabled' => line[ENABLED] == 'Yes' ? true : false,
          'sync_date' => line[STARTDATE],
          'interval' => line[INTERVAL],
          'products' => products(line)
      })
    else
      print "Updating sync plan '#{name}'..." if option_verbose?
      # TODO
      # @api.resource(:host_collections).call(:update, {
      #     'organization_id' => line[ORGANIZATION],
      #     'id' => @existing[line[ORGANIZATION]][name],
      #     'name' => name,
      #     'max_systems' => (line[LIMIT] == 'Unlimited') ? -1 : line[LIMIT],
      #     'description' => line[DESCRIPTION]
      # })
    end
    puts "done" if option_verbose?
  end

end
export(csv) click to toggle source
# File lib/hammer_cli_csv/sync_plans.rb, line 14
def export(csv)
  csv << [NAME, ORGANIZATION, DESCRIPTION, ENABLED, STARTDATE, INTERVAL, PRODUCTS]

  @api.resource(:organizations).call(:index, {:per_page => 999999})['results'].each do |organization|
    next if option_organization && organization['name'] != option_organization

    @api.resource(:sync_plans).call(:index, {
         'per_page' => 999999,
         'search' => option_search,
         'organization_id' => foreman_organization(:name => organization['name'])
    })['results'].each do |sync_plan|
      name = sync_plan['name']
      organization_name = organization['name']
      description = sync_plan['description']
      enabled = sync_plan['enabled'] ? 'Yes' : 'No'
      start_date = sync_plan['sync_date']
      interval = sync_plan['interval']
      products = CSV.generate do |column|
        column << sync_plan['products'].collect do |product|
          product['name']
        end
      end
      products.delete!("\n")
      csv << [name, organization_name, description, enabled, start_date, interval,
              products]
    end
  end
end
import() click to toggle source
# File lib/hammer_cli_csv/sync_plans.rb, line 43
def import
  @existing = {}

  thread_import do |line|
    create_content_hosts_from_csv(line)
  end
end

Private Instance Methods

products(line) click to toggle source
# File lib/hammer_cli_csv/sync_plans.rb, line 95
def products(line)
  return nil if !line[PRODUCTS] || line[PRODUCTS].empty?
  CSV.parse_line(line[PRODUCTS]).collect do |name|
    katello_product(line[ORGANIZATION], :name => name)
  end
end