class HammerCLICsv::CsvCommand::PartitionTablesCommand
Constants
- LAYOUT
- LOCATIONS
- OPERATINGSYSTEMS
- ORGANIZATIONS
- OSFAMILY
Public Instance Methods
create_ptables_from_csv(line)
click to toggle source
# File lib/hammer_cli_csv/partition_tables.rb, line 66 def create_ptables_from_csv(line) params = { 'ptable' => { 'os_family' => line[OSFAMILY], 'layout' => line[LAYOUT] } } # Check for backwards compatibility if apipie_check_param(:ptable, :create, 'ptable[operatingsystem_ids]') operatingsystems = collect_column(line[OPERATINGSYSTEMS]) do |operatingsystem| foreman_operatingsystem(:name => operatingsystem) end params['ptable']['operatingsystem_ids'] = operatingsystems end if apipie_check_param(:ptable, :create, 'ptable[organization_ids]') organizations = collect_column(line[ORGANIZATIONS]) do |organization| foreman_organization(:name => organization) end params['ptable']['organization_ids'] = organizations end if apipie_check_param(:ptable, :create, 'ptable[location_ids]') locations = collect_column(line[LOCATIONS]) do |location| foreman_location(:name => location) end params['ptable']['location_ids'] = locations end count(line[COUNT]).times do |number| name = namify(line[NAME], number) params['ptable']['name'] = name if !@existing.include? name print "Creating partition-table '#{name}'... " if option_verbose? @api.resource(:ptables).call(:create, params) else print "Updating partition-table '#{name}'..." if option_verbose? params['id'] = @existing[name] @api.resource(:ptables).call(:update, params) end print "done\n" if option_verbose? end end
export(csv)
click to toggle source
# File lib/hammer_cli_csv/partition_tables.rb, line 13 def export(csv) # TODO: partition-tables do not return their organizations or locations # http://projects.theforeman.org/issues/11175 organizations_map = {} @api.resource(:organizations).call(:index, {:per_page => 999999})['results'].each do |organization| ptables = @api.resource(:ptables).call(:index, { 'organization_id' => organization['id'], 'search' => option_search })['results'].each do |ptable| organizations_map[ptable['name']] ||= [] organizations_map[ptable['name']] << organization['name'] end end locations_map = {} @api.resource(:locations).call(:index, {:per_page => 999999})['results'].each do |location| ptables = @api.resource(:ptables).call(:index, {'location_id' => location['id']})['results'].each do |ptable| locations_map[ptable['name']] ||= [] locations_map[ptable['name']] << location['name'] end end csv << [NAME, ORGANIZATIONS, LOCATIONS, OSFAMILY, OPERATINGSYSTEMS, LAYOUT] @api.resource(:ptables).call(:index, {:per_page => 999999})['results'].each do |ptable| ptable = @api.resource(:ptables).call(:show, {'id' => ptable['id']}) name = ptable['name'] osfamily = ptable['os_family'] layout = ptable['layout'] operatingsystems = export_column(ptable, 'operatingsystems', 'title') organizations = CSV.generate do |column| column << organizations_map[name] if organizations_map[name] end organizations.delete!("\n") locations = CSV.generate do |column| column << locations_map[name] if locations_map[name] end locations.delete!("\n") csv << [name, organizations, locations, osfamily, operatingsystems, layout] end end
import()
click to toggle source
# File lib/hammer_cli_csv/partition_tables.rb, line 55 def import @existing = {} @api.resource(:ptables).call(:index, {:per_page => 999999})['results'].each do |ptable| @existing[ptable['name']] = ptable['id'] if ptable end thread_import do |line| create_ptables_from_csv(line) end end