def enable_products_from_csv(line)
results = @api.resource(:products).call(:index, {
'per_page' => 999999,
'organization_id' => foreman_organization(:name => line[ORGANIZATION]),
'name' => line[NAME]
})['results']
raise "No match for product '#{line[NAME]}'" if results.length == 0
raise "Multiple matches for product '#{line[NAME]}'" if results.length != 1
product = results[0]
results = @api.resource(:repository_sets).call(:index, {
'per_page' => 999999,
'organization_id' => foreman_organization(:name => line[ORGANIZATION]),
'product_id' => product['id'],
'name' => line[CONTENT_SET]
})['results']
raise "No match for content set '#{line[CONTENT_SET]}'" if results.length == 0
raise "Multiple matches for content set '#{line[CONTENT_SET]}'" if results.length != 1
repository_set = results[0]
repository = repository_set['repositories'].find do |repo|
repo['name'].end_with?("#{line[ARCH]} #{line[RELEASE]}")
end
if repository.nil?
print "Enabling repository #{line[CONTENT_SET]} #{line[ARCH]} #{line[RELEASE]}..." if option_verbose?
product_content = product['product_content'].find do |content|
content['content']['name'] == line[CONTENT_SET]
end
raise "No match for content set '#{line[CONTENT_SET]}'" if !product_content
@api.resource(:repository_sets).call(:enable, {
'id' => product_content['content']['id'],
'product_id' => product['id'],
'basearch' => line[ARCH],
'releasever' => line[RELEASE]
})
puts 'done' if option_verbose?
else
puts "Repository #{repository['name']} already enabled" if option_verbose?
end
end