class HammerCLICsv::CsvCommand::LifecycleEnvironmentsCommand

Constants

DESCRIPTION
ORGANIZATION
PRIORENVIRONMENT

Public Instance Methods

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

  count(line[COUNT]).times do |number|
    name = namify(line[NAME], number)
    prior = line[PRIORENVIRONMENT] == 'Library' ? 'Library' :
                                      namify(line[PRIORENVIRONMENT], number)
    raise "Organization '#{line[ORGANIZATION]}' does not exist" if !@existing.include? line[ORGANIZATION]
    if !@existing[line[ORGANIZATION]].include? name
      print "Creating environment '#{name}'..." if option_verbose?
      @api.resource(:lifecycle_environments).call(:create, {
          'organization_id' => foreman_organization(:name => line[ORGANIZATION]),
          'name' => name,
          #'prior' => lifecycle_environment(line[ORGANIZATION], :name => prior),
          'prior_id' => lifecycle_environment(line[ORGANIZATION], :name => prior),
          'description' => line[DESCRIPTION]
      })
    else
      print "Updating environment '#{name}'..." if option_verbose?
      @api.resource(:lifecycle_environments).call(:update, {
          'id' => @existing[line[ORGANIZATION]][name],
          'description' => line[DESCRIPTION]
      })
    end
    print "done\n" if option_verbose?
  end
end
export(csv) click to toggle source
# File lib/hammer_cli_csv/lifecycle_environments.rb, line 11
def export(csv)
  csv << [NAME, ORGANIZATION, PRIORENVIRONMENT, DESCRIPTION]
  @api.resource(:organizations).call(:index, {
      'per_page' => 999999
  })['results'].each do |organization|
    next if option_organization && organization['name'] != option_organization

    @api.resource(:lifecycle_environments).call(:index, {
        'per_page' => 999999,
        'search' => option_search,
        'organization_id' => organization['id']
    })['results'].sort { |a, b| a['created_at'] <=> b['created_at'] }.each do |environment|
      if environment['name'] != 'Library'
        name = environment['name']
        prior = environment['prior']['name']
        description = environment['description']
        csv << [name, organization['name'], prior, description]
      end
    end
  end
end
import() click to toggle source
# File lib/hammer_cli_csv/lifecycle_environments.rb, line 33
def import
  @existing = {}
  @api.resource(:organizations).call(:index, {
      'per_page' => 999999
  })['results'].each do |organization|
    @api.resource(:lifecycle_environments).call(:index, {
        'per_page' => 999999,
        'organization_id' => foreman_organization(:name => organization['name'])
    })['results'].each do |environment|
      @existing[organization['name']] ||= {}
      @existing[organization['name']][environment['name']] = environment['id'] if environment
    end
  end

  thread_import do |line|
    create_environments_from_csv(line)
  end
end