Revision bfc065ce
Added by Thomas McKay over 10 years ago
.gitignore | ||
---|---|---|
pickle-email-*.html
|
||
.project
|
||
config/initializers/secret_token.rb
|
||
test/data/*.zip
|
||
test/config.yml
|
Gemfile | ||
---|---|---|
|
||
gem 'pry'
|
||
gem 'pry-debugger'
|
||
|
||
group :test do
|
||
gem 'rake'
|
||
gem 'thor'
|
||
gem 'minitest', '4.7.4'
|
||
gem 'minitest-spec-context'
|
||
gem 'simplecov'
|
||
gem 'mocha'
|
||
gem 'ci_reporter'
|
||
end
|
Rakefile | ||
---|---|---|
|
||
Rake::TestTask.new do |t|
|
||
t.libs << "lib"
|
||
t.test_files = Dir.glob('test/**/*_test.rb')
|
||
t.test_files = Dir['test/setup_test.rb'] + Dir.glob('test/**/*_test.rb')
|
||
t.verbose = true
|
||
end
|
hammer-it | ||
---|---|---|
#!/bin/csh -f
|
||
|
||
# Replaced with: rake test TEST=test/setup_test.rb
|
||
|
||
bundle exec hammer -v csv:organizations --csv-file test/data/organizations.csv
|
||
bundle exec hammer -v csv:users --csv-file test/data/users.csv
|
||
bundle exec hammer -v csv:operatingsystems --csv-file test/data/operatingsystems.csv
|
||
... | ... | |
bundle exec hammer -v csv:systemgroups --csv-file test/data/systemgroups.csv
|
||
bundle exec hammer -v csv:systems --csv-file test/data/systems.csv
|
||
bundle exec hammer -v csv:activationkeys --csv-file test/data/activationkeys.csv
|
||
bundle exec hammer -v csv:roles --csv-file test/data/roles.csv
|
lib/hammer_cli_csv.rb | ||
---|---|---|
require 'hammer_cli_csv/activation_keys'
|
||
require 'hammer_cli_csv/architectures'
|
||
require 'hammer_cli_csv/domains'
|
||
require 'hammer_cli_csv/puppet_environments'
|
||
require 'hammer_cli_csv/hosts'
|
||
require 'hammer_cli_csv/locations'
|
||
require 'hammer_cli_csv/operating_systems'
|
||
require 'hammer_cli_csv/organizations'
|
||
require 'hammer_cli_csv/permissions'
|
||
require 'hammer_cli_csv/partition_tables'
|
||
require 'hammer_cli_csv/permissions'
|
||
require 'hammer_cli_csv/puppet_environments'
|
||
require 'hammer_cli_csv/puppet_facts'
|
||
require 'hammer_cli_csv/puppet_reports'
|
||
require 'hammer_cli_csv/reports'
|
||
require 'hammer_cli_csv/roles'
|
||
require 'hammer_cli_csv/system_groups'
|
||
require 'hammer_cli_csv/users'
|
||
require 'hammer_cli_csv/puppet_facts'
|
||
require 'hammer_cli_csv/puppet_reports'
|
||
|
||
require 'hammer_cli_csv/lifecycle_environments'
|
||
require 'hammer_cli_csv/activation_keys'
|
||
require 'hammer_cli_csv/content_views'
|
||
require 'hammer_cli_csv/lifecycle_environments'
|
||
require 'hammer_cli_csv/products'
|
||
require 'hammer_cli_csv/subscriptions'
|
||
require 'hammer_cli_csv/systems'
|
||
require 'hammer_cli_csv/system_groups'
|
||
require 'hammer_cli_csv/products'
|
||
require 'hammer_cli_csv/activation_keys'
|
||
end
|
lib/hammer_cli_csv/activation_keys.rb | ||
---|---|---|
@existing[line[ORGANIZATION]] = {}
|
||
@k_activationkey_api.index({
|
||
'per_page' => 999999,
|
||
'organization_id' => line[ORGANIZATION]
|
||
'organization_id' => katello_organization(:name => line[ORGANIZATION])
|
||
})[0]['results'].each do |activationkey|
|
||
@existing[line[ORGANIZATION]][activationkey['name']] = activationkey['id'] if activationkey
|
||
end
|
||
... | ... | |
})[0]
|
||
@existing[line[ORGANIZATION]][activationkey['name']] = activationkey['id']
|
||
else
|
||
print "Updating activationkey '#{name}'..." if option_verbose?
|
||
print "Updating activation key '#{name}'..." if option_verbose?
|
||
activationkey = @k_activationkey_api.update({
|
||
'id' => @existing[line[ORGANIZATION]][name],
|
||
'name' => name,
|
lib/hammer_cli_csv/base.rb | ||
---|---|---|
@f_permission_api ||= ForemanApi::Resources::Permission.new(@init_options)
|
||
@f_partitiontable_api ||= ForemanApi::Resources::Ptable.new(@init_options)
|
||
@f_puppetfacts_api ||= ForemanApi::Resources::FactValue.new(@init_options)
|
||
@f_report_api ||= ForemanApi::Resources::Report.new(@init_options)
|
||
@f_role_api ||= ForemanApi::Resources::Role.new(@init_options)
|
||
@f_user_api ||= ForemanApi::Resources::User.new(@init_options)
|
||
|
||
... | ... | |
HammerCLI::EX_OK
|
||
end
|
||
|
||
def get_lines(filename)
|
||
file = File.open(filename ,'r')
|
||
contents = file.readlines
|
||
file.close
|
||
contents
|
||
end
|
||
|
||
def namify(name_format, number=0)
|
||
if name_format.index('%')
|
||
name = name_format % number
|
||
... | ... | |
return nil if options[:name].nil? || options[:name].empty?
|
||
options[:id] = @organizations[options[:name]]
|
||
if !options[:id]
|
||
organization = @f_organization_api.index({'search' => "name=\"#{options[:name]}\""})[0]['results']
|
||
organization = @f_organization_api.index({'search' => "title=\"#{options[:name]}\""})[0]['results']
|
||
raise RuntimeError, "Organization '#{options[:name]}' not found" if !organization || organization.empty?
|
||
options[:id] = organization[0]['id']
|
||
@organizations[options[:name]] = options[:id]
|
||
... | ... | |
result
|
||
end
|
||
|
||
def katello_organization(options={})
|
||
@organizations ||= {}
|
||
|
||
if options[:name]
|
||
return nil if options[:name].nil? || options[:name].empty?
|
||
options[:id] = @organizations[options[:name]]
|
||
if !options[:id]
|
||
organization = @k_organization_api.index({'search' => "title=\"#{options[:name]}\""})[0]['results']
|
||
raise RuntimeError, "Organization '#{options[:name]}' not found" if !organization || organization.empty?
|
||
options[:id] = organization[0]['label']
|
||
@organizations[options[:name]] = options[:id]
|
||
end
|
||
result = options[:id]
|
||
else
|
||
return nil if options[:id].nil?
|
||
options[:name] = @organizations.key(options[:id])
|
||
if !options[:name]
|
||
organization = @k_organization_api.show({'id' => options[:id]})[0]
|
||
raise "Organization 'id=#{options[:id]}' not found" if !organization || organization.empty?
|
||
options[:name] = organization['name']
|
||
@organizations[options[:name]] = options[:id]
|
||
end
|
||
result = options[:name]
|
||
end
|
||
|
||
result
|
||
end
|
||
|
||
def foreman_location(options={})
|
||
@locations ||= {}
|
||
|
||
... | ... | |
result
|
||
end
|
||
|
||
def foreman_role(options={})
|
||
@roles ||= {}
|
||
|
||
if options[:name]
|
||
return nil if options[:name].nil? || options[:name].empty?
|
||
options[:id] = @roles[options[:name]]
|
||
if !options[:id]
|
||
role = @f_role_api.index({'search' => "name=\"#{options[:name]}\""})[0]['results']
|
||
raise RuntimeError, "Role '#{options[:name]}' not found" if !role || role.empty?
|
||
options[:id] = role[0]['id']
|
||
@roles[options[:name]] = options[:id]
|
||
end
|
||
result = options[:id]
|
||
else
|
||
return nil if options[:id].nil?
|
||
options[:name] = @roles.key(options[:id])
|
||
if !options[:name]
|
||
role = @f_role_api.show({'id' => options[:id]})[0]
|
||
raise "Role 'id=#{options[:id]}' not found" if !role || role.empty?
|
||
options[:name] = role['name']
|
||
@roles[options[:name]] = options[:id]
|
||
end
|
||
result = options[:name]
|
||
end
|
||
|
||
result
|
||
end
|
||
|
||
def foreman_permission(options={})
|
||
@permissions ||= {}
|
||
|
||
... | ... | |
return nil if options[:name].nil? || options[:name].empty?
|
||
options[:id] = @environments[organization][options[:name]]
|
||
if !options[:id]
|
||
@k_environment_api.index({'organization_id' => organization})[0]['results'].each do |environment|
|
||
@k_environment_api.index({'organization_id' => katello_organization(:name => organization)})[0]['results'].each do |environment|
|
||
@environments[organization][environment['name']] = environment['id']
|
||
end
|
||
options[:id] = @environments[organization][options[:name]]
|
||
... | ... | |
return nil if options[:name].nil? || options[:name].empty?
|
||
options[:id] = @contentviews[organization][options[:name]]
|
||
if !options[:id]
|
||
@k_contentview_api.index({'organization_id' => organization})[0]['results'].each do |contentview|
|
||
@k_contentview_api.index({'organization_id' => katello_organization(:name => organization)})[0]['results'].each do |contentview|
|
||
@contentviews[organization][contentview['name']] = contentview['id']
|
||
end
|
||
options[:id] = @contentviews[organization][options[:name]]
|
||
... | ... | |
options[:id] = @subscriptions[organization][options[:name]]
|
||
if !options[:id]
|
||
results = @k_subscription_api.index({
|
||
'organization_id' => organization,
|
||
'organization_id' => katello_organization(:name => organization),
|
||
'search' => "name:\"#{options[:name]}\""
|
||
})[0]
|
||
raise "No subscriptions match '#{options[:name]}'" if results['subtotal'] == 0
|
||
... | ... | |
options[:id] = @systemgroups[organization][options[:name]]
|
||
if !options[:id]
|
||
@k_systemgroup_api.index({
|
||
'organization_id' => organization,
|
||
'organization_id' => katello_organization(:name => organization),
|
||
'search' => "name:\"#{options[:name]}\""
|
||
})[0]['results'].each do |systemgroup|
|
||
@systemgroups[organization][systemgroup['name']] = systemgroup['id'] if systemgroup
|
||
... | ... | |
name
|
||
end
|
||
|
||
# "Red Hat 6.4" => "Red Hat", "6", "4"
|
||
# "Red Hat 6" => "Red Hat", "6", ""
|
||
def split_os_name(name)
|
||
(name, major, minor) = name.split(' ').collect {|s| s.split('.')}.flatten
|
||
tokens = name.split(' ')
|
||
is_number = Float(tokens[-1]) rescue false
|
||
if is_number
|
||
(major, minor) = tokens[-1].split('.').flatten
|
||
name = tokens[0...-1].join(' ')
|
||
else
|
||
name = tokens.join(' ')
|
||
end
|
||
[name, major || "", minor || ""]
|
||
end
|
||
end
|
lib/hammer_cli_csv/domains.rb | ||
---|---|---|
})[0]['domain']['id']
|
||
end
|
||
|
||
CSV.parse_line(line[ORGANIZATIONS]).each do |organization_label|
|
||
CSV.parse_line(line[ORGANIZATIONS]).each do |organization|
|
||
@k_organization_api.update({
|
||
'id' => organization_label,
|
||
'id' => foreman_organization(:name => organization),
|
||
'domain_ids' => [domain_id]
|
||
})
|
||
end
|
lib/hammer_cli_csv/hosts.rb | ||
---|---|---|
@f_host_api.create({
|
||
'host' => {
|
||
'name' => name,
|
||
'root_pass' => 'changeme',
|
||
'mac' => namify(line[MACADDRESS], number),
|
||
'organization_id' => foreman_organization(:name => line[ORGANIZATION]),
|
||
'environment_id' => foreman_environment(:name => line[ENVIRONMENT]),
|
lib/hammer_cli_csv/lifecycle_environments.rb | ||
---|---|---|
label = environment['label']
|
||
prior = environment['prior']
|
||
description = environment['description']
|
||
csv << [name, count, label, organization['label'], prior, description]
|
||
csv << [name, count, label, organization['name'], prior, description]
|
||
end
|
||
end
|
||
end
|
||
... | ... | |
@k_organization_api.index({'per_page' => 999999})[0]['results'].each do |organization|
|
||
@k_environment_api.index({
|
||
'per_page' => 999999,
|
||
'organization_id' => organization['label']
|
||
'organization_id' => katello_organization(:name => organization['name'])
|
||
})[0]['results'].each do |environment|
|
||
@existing[organization['label']] ||= {}
|
||
@existing[organization['label']][environment['name']] = environment['id'] if environment
|
||
@existing[organization['name']] ||= {}
|
||
@existing[organization['name']][environment['name']] = environment['id'] if environment
|
||
end
|
||
end
|
||
|
||
... | ... | |
if !@existing[line[ORGANIZATION]].include? name
|
||
print "Creating environment '#{name}'..." if option_verbose?
|
||
@k_environment_api.create({
|
||
'organization_id' => line[ORGANIZATION],
|
||
'organization_id' => katello_organization(:name => line[ORGANIZATION]),
|
||
'name' => name,
|
||
'label' => label,
|
||
'prior' => prior,
|
||
'prior' => katello_environment(line[ORGANIZATION], :name => prior),
|
||
'description' => line[DESCRIPTION]
|
||
})
|
||
else
|
||
print "Updating environment '#{name}'..." if option_verbose?
|
||
@k_environment_api.update({
|
||
'id' => label,
|
||
'id' => katello_environment(line[ORGANIZATION], :name => label),
|
||
'name' => name,
|
||
'new_name' => name,
|
||
'organization_id' => line[ORGANIZATION],
|
||
'organization_id' => katello_organization(:name => line[ORGANIZATION]),
|
||
'prior' => prior,
|
||
'description' => line[DESCRIPTION]
|
||
})
|
lib/hammer_cli_csv/locations.rb | ||
---|---|---|
# Copyright (c) 2013-2014 Red Hat
|
||
#
|
||
# MIT License
|
||
#
|
||
# Permission is hereby granted, free of charge, to any person obtaining
|
||
# a copy of this software and associated documentation files (the
|
||
# "Software"), to deal in the Software without restriction, including
|
||
# without limitation the rights to use, copy, modify, merge, publish,
|
||
# distribute, sublicense, and/or sell copies of the Software, and to
|
||
# permit persons to whom the Software is furnished to do so, subject to
|
||
# the following conditions:
|
||
#
|
||
# The above copyright notice and this permission notice shall be
|
||
# included in all copies or substantial portions of the Software.
|
||
#
|
||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
#
|
||
#
|
||
# -= Locations CSV =-
|
||
#
|
||
# Columns
|
||
# Name
|
||
# - Name of the location.
|
||
# - May contain '%d' which will be replaced with current iteration number of Count
|
||
# - eg. "location%d" -> "location1"
|
||
# Count
|
||
# - Number of times to iterate on this line of the CSV file
|
||
#
|
||
|
||
require 'hammer_cli'
|
||
require 'katello_api'
|
||
require 'json'
|
||
require 'csv'
|
||
|
||
module HammerCLICsv
|
||
class LocationsCommand < BaseCommand
|
||
|
||
def export
|
||
CSV.open(option_csv_file || '/dev/stdout', 'wb', {:force_quotes => true}) do |csv|
|
||
csv << [NAME, COUNT]
|
||
@f_location_api.index({:per_page => 999999})[0]['results'].each do |location|
|
||
csv << [location['name'], 1]
|
||
end
|
||
end
|
||
end
|
||
|
||
def import
|
||
@existing = {}
|
||
@f_location_api.index({:per_page => 999999})[0]['results'].each do |location|
|
||
@existing[location['name']] = location['id'] if location
|
||
end
|
||
|
||
thread_import do |line|
|
||
create_locations_from_csv(line)
|
||
end
|
||
end
|
||
|
||
def create_locations_from_csv(line)
|
||
line[COUNT].to_i.times do |number|
|
||
name = namify(line[NAME], number)
|
||
if !@existing.include? name
|
||
print "Creating location '#{name}'... " if option_verbose?
|
||
@f_location_api.create({
|
||
'name' => name
|
||
})
|
||
else
|
||
print "Updating location '#{name}'... " if option_verbose?
|
||
#@f_location_api.update({
|
||
# 'id' => label
|
||
# })
|
||
end
|
||
print "done\n" if option_verbose?
|
||
end
|
||
end
|
||
end
|
||
|
||
HammerCLI::MainCommand.subcommand("csv:locations", "ping the katello server", HammerCLICsv::LocationsCommand)
|
||
end
|
lib/hammer_cli_csv/operating_systems.rb | ||
---|---|---|
}
|
||
})
|
||
else
|
||
print "Updating operatingsystem '#{name}'..." if option_verbose?
|
||
print "Updating operating system '#{name}'..." if option_verbose?
|
||
@f_operatingsystem_api.update({
|
||
'id' => @existing[name],
|
||
'operatingsystem' => {
|
lib/hammer_cli_csv/partition_tables.rb | ||
---|---|---|
class PartitionTablesCommand < BaseCommand
|
||
|
||
OSFAMILY = 'OS Family'
|
||
OPERATINGSYSTEMS = 'Operating Systems'
|
||
LAYOUT = 'Layout'
|
||
|
||
def export
|
||
CSV.open(option_csv_file || '/dev/stdout', 'wb', {:force_quotes => true}) do |csv|
|
||
csv << [NAME, COUNT, OSFAMILY, LAYOUT]
|
||
csv << [NAME, COUNT, OSFAMILY, OPERATINGSYSTEMS, LAYOUT]
|
||
@f_partitiontable_api.index({:per_page => 999999})[0]['results'].each do |ptable|
|
||
ptable = @f_partitiontable_api.show({'id' => ptable['id']})[0]
|
||
name = ptable['name']
|
||
count = 1
|
||
osfamily = ptable['os_family']
|
||
layout = ptable['layout']
|
||
raise "TODO: operating systems"
|
||
csv << [name, count, osfamily, layout]
|
||
end
|
||
end
|
||
... | ... | |
def create_ptables_from_csv(line)
|
||
line[COUNT].to_i.times do |number|
|
||
name = namify(line[NAME], number)
|
||
operatingsystem_ids = CSV.parse_line(line[OPERATINGSYSTEMS]).collect do |operatingsystem_name|
|
||
foreman_operatingsystem(:name => operatingsystem_name)
|
||
end if line[OPERATINGSYSTEMS]
|
||
if !@existing.include? name
|
||
print "Creating ptable '#{name}'... " if option_verbose?
|
||
@f_partitiontable_api.create({
|
||
'ptable' => {
|
||
'name' => name,
|
||
'os_family' => line[OSFAMILY],
|
||
'layout' => line[LAYOUT]
|
||
}
|
||
})
|
||
'ptable' => {
|
||
'name' => name,
|
||
'os_family' => line[OSFAMILY],
|
||
'operatingsystem_ids' => operatingsystem_ids,
|
||
'layout' => line[LAYOUT]
|
||
}
|
||
})
|
||
else
|
||
print "Updating ptable '#{name}'..." if option_verbose?
|
||
@f_partitiontable_api.update({
|
||
'id' => @existing[name],
|
||
'ptable' => {
|
||
'name' => name,
|
||
'os_family' => line[OSFAMILY],
|
||
'layout' => line[LAYOUT]
|
||
'id' => @existing[name],
|
||
'ptable' => {
|
||
'name' => name,
|
||
'os_family' => line[OSFAMILY],
|
||
'operatingsystem_ids' => operatingsystem_ids,
|
||
'layout' => line[LAYOUT]
|
||
}
|
||
})
|
||
end
|
lib/hammer_cli_csv/products.rb | ||
---|---|---|
class ProductsCommand < BaseCommand
|
||
|
||
ORGANIZATION = 'Organization'
|
||
PROVIDER = 'Provider'
|
||
REPOSITORY = 'Repository'
|
||
REPOSITORY_TYPE = 'Repository Type'
|
||
REPOSITORY_URL = 'Repository Url'
|
||
... | ... | |
|
||
def import
|
||
@existing_products = {}
|
||
@existing_providers = {}
|
||
@existing_repositories = {}
|
||
|
||
thread_import do |line|
|
||
... | ... | |
end
|
||
|
||
def create_products_from_csv(line)
|
||
if !@existing_providers[line[ORGANIZATION]]
|
||
# TODO: get the red hat provider explicitly and put into list since it's not returned by index
|
||
@existing_providers[line[ORGANIZATION]] = {}
|
||
@k_provider_api.index({'organization_id' => line[ORGANIZATION], 'page_size' => 999999, 'paged' => true})[0]['results'].each do |provider|
|
||
@existing_providers[line[ORGANIZATION]][provider['name']] = provider['id'] if provider
|
||
end
|
||
|
||
if !@existing_products[line[ORGANIZATION]]
|
||
@existing_products[line[ORGANIZATION]] = {}
|
||
@k_product_api.index({'organization_id' => line[ORGANIZATION], 'page_size' => 999999, 'paged' => true})[0]['results'].each do |product|
|
||
@k_product_api.index({
|
||
'organization_id' => katello_organization(:name => line[ORGANIZATION]),
|
||
'page_size' => 999999,
|
||
'paged' => true
|
||
})[0]['results'].each do |product|
|
||
@existing_products[line[ORGANIZATION]][product['name']] = product['id'] if product
|
||
|
||
if product
|
||
@k_repository_api.index({
|
||
'organization_id' => line[ORGANIZATION],
|
||
'organization_id' => katello_organization(:name => line[ORGANIZATION]),
|
||
'product_id' => product['id'],
|
||
'enabled' => true,
|
||
'library' => true,
|
||
... | ... | |
end
|
||
end
|
||
|
||
# Only creating providers, not updating
|
||
if !@existing_providers[line[ORGANIZATION]][line[PROVIDER]]
|
||
print "Creating provider '#{line[PROVIDER]}'..." if option_verbose?
|
||
id = @k_provider_api.create({
|
||
'name' => line[PROVIDER],
|
||
'organization_id' => line[ORGANIZATION]
|
||
})[0]['id']
|
||
@existing_providers[line[ORGANIZATION]][line[PROVIDER]] = id
|
||
print "done\n" if option_verbose?
|
||
end
|
||
provider_id = @existing_providers[line[ORGANIZATION]][line[PROVIDER]]
|
||
|
||
# Only creating products, not updating
|
||
line[COUNT].to_i.times do |number|
|
||
name = namify(line[NAME], number)
|
||
... | ... | |
if !product_id
|
||
print "Creating product '#{name}'..." if option_verbose?
|
||
product_id = @k_product_api.create({
|
||
'name' => name,
|
||
'provider_id' => provider_id
|
||
'organization_id' => katello_organization(:name => line[ORGANIZATION]),
|
||
'name' => name
|
||
})[0]['id']
|
||
@existing_products[line[ORGANIZATION]][name] = product_id
|
||
print "done\n" if option_verbose?
|
||
... | ... | |
if !@existing_repositories[line[ORGANIZATION] + name][labelize(repository_name)]
|
||
print "Creating repository '#{repository_name}' in product '#{name}'..." if option_verbose?
|
||
@k_repository_api.create({
|
||
'organization_id' => katello_organization(:name => line[ORGANIZATION]),
|
||
'name' => repository_name,
|
||
'label' => labelize(repository_name),
|
||
'product_id' => product_id,
|
||
... | ... | |
end
|
||
end
|
||
|
||
HammerCLI::MainCommand.subcommand("csv:products", "import/export products and repositories", HammerCLICsv::ProductsCommand)
|
||
HammerCLI::MainCommand.subcommand("csv:products", "import/export products and repositories",
|
||
HammerCLICsv::ProductsCommand)
|
||
end
|
lib/hammer_cli_csv/puppet_environments.rb | ||
---|---|---|
module HammerCLICsv
|
||
class PuppetEnvironmentsCommand < BaseCommand
|
||
|
||
ORGANIZATIONS = 'Organizations'
|
||
|
||
def export
|
||
CSV.open(option_csv_file || '/dev/stdout', 'wb', {:force_quotes => true}) do |csv|
|
||
csv << [NAME, COUNT]
|
||
csv << [NAME, COUNT, ORGANIZATIONS]
|
||
@f_environment_api.index({:per_page => 999999})[0]['results'].each do |environment|
|
||
name = environment['name']
|
||
count = 1
|
||
raise "TODO: organizations"
|
||
csv << [name, count]
|
||
end
|
||
end
|
||
... | ... | |
name = namify(line[NAME], number)
|
||
if !@existing.include? name
|
||
print "Creating environment '#{name}'..." if option_verbose?
|
||
@f_environment_api.create({
|
||
'environment' => {
|
||
'name' => name
|
||
}
|
||
})
|
||
id = @f_environment_api.create({
|
||
'environment' => {
|
||
'name' => name
|
||
}
|
||
})[0]['environment']['id']
|
||
else
|
||
print "Updating environment '#{name}'..." if option_verbose?
|
||
@f_environment_api.update({
|
||
'id' => @existing[name],
|
||
'environment' => {
|
||
'name' => name
|
||
}
|
||
})
|
||
id = @f_environment_api.update({
|
||
'id' => @existing[name],
|
||
'environment' => {
|
||
'name' => name
|
||
}
|
||
})[0]['environment']['id']
|
||
end
|
||
|
||
CSV.parse_line(line[ORGANIZATIONS]).each do |organization|
|
||
@k_organization_api.update({
|
||
'id' => foreman_organization(:name => organization),
|
||
'environment_ids' => [id]
|
||
})
|
||
end
|
||
|
||
print "done\n" if option_verbose?
|
||
end
|
||
rescue RuntimeError => e
|
lib/hammer_cli_csv/reports.rb | ||
---|---|---|
# Copyright (c) 2013-2014 Red Hat
|
||
#
|
||
# MIT License
|
||
#
|
||
# Permission is hereby granted, free of charge, to any person obtaining
|
||
# a copy of this software and associated documentation files (the
|
||
# "Software"), to deal in the Software without restriction, including
|
||
# without limitation the rights to use, copy, modify, merge, publish,
|
||
# distribute, sublicense, and/or sell copies of the Software, and to
|
||
# permit persons to whom the Software is furnished to do so, subject to
|
||
# the following conditions:
|
||
#
|
||
# The above copyright notice and this permission notice shall be
|
||
# included in all copies or substantial portions of the Software.
|
||
#
|
||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
#
|
||
|
||
module HammerCLICsv
|
||
class ReportsCommand < BaseCommand
|
||
|
||
TIME = 'Time'
|
||
APPLIED = 'Applied'
|
||
RESTARTED = 'Restarted'
|
||
FAILED = 'Failed'
|
||
FAILED_RESTARTS = 'Failed Restarts'
|
||
SKIPPED = 'Skipped'
|
||
PENDING = 'Pending'
|
||
METRICS = 'Metrics'
|
||
|
||
def export
|
||
CSV.open(option_csv_file || '/dev/stdout', 'wb', {:force_quotes => false}) do |csv|
|
||
csv << [NAME, COUNT]
|
||
@f_report_api.index({'per_page' => 999999})[0]['results'].each do |report|
|
||
csv << [report['host_name'], 1, report['metrics'].to_json]
|
||
end
|
||
end
|
||
|
||
HammerCLI::EX_OK
|
||
end
|
||
|
||
def import
|
||
@existing_reports = {}
|
||
@f_report_api.index({'per_page' => 999999})[0]['results'].each do |report|
|
||
@existing_reports[report['name']] = report['id']
|
||
end
|
||
|
||
thread_import do |line|
|
||
create_reports_from_csv(line)
|
||
end
|
||
end
|
||
|
||
def create_reports_from_csv(line)
|
||
line[COUNT].to_i.times do |number|
|
||
name = namify(line[NAME], number)
|
||
|
||
if !@existing_reports[name]
|
||
print "Creating report '#{name}'..." if option_verbose?
|
||
report = @f_report_api.create({
|
||
'host' => name,
|
||
'reported_at' => line[TIME],
|
||
'status' => {
|
||
'applied' => line[APPLIED],
|
||
'restarted' => line[RESTARTED],
|
||
'failed' => line[FAILED],
|
||
'failed_restarts' => line[FAILED_RESTARTS],
|
||
'skipped' => line[SKIPPED],
|
||
'pending' => line[PENDING]
|
||
},
|
||
'metrics' => JSON.parse(line[METRICS]),
|
||
'logs' => []
|
||
})[0]
|
||
=begin
|
||
'metrics' => {
|
||
'time' => {
|
||
'config_retrieval' => line[CONFIG_RETRIEVAL]
|
||
},
|
||
'resources' => {
|
||
'applied' => 0,
|
||
'failed' => 0,
|
||
'failed_restarts' => 0,
|
||
'out_of_sync' => 0,
|
||
'restarted' => 0,
|
||
'scheduled' => 1368,
|
||
'skipped' => 1,
|
||
'total' => 1450
|
||
},
|
||
'changes' => {
|
||
'total' => 0
|
||
}
|
||
},
|
||
=end
|
||
@existing_reports[name] = report['id']
|
||
else
|
||
print "Updating report '#{name}'..." if option_verbose?
|
||
@f_report_api.update({
|
||
'id' => @existing_reports[name]
|
||
})
|
||
end
|
||
|
||
puts "done" if option_verbose?
|
||
end
|
||
end
|
||
end
|
||
|
||
HammerCLI::MainCommand.subcommand("csv:reports", "import / export reports", HammerCLICsv::ReportsCommand)
|
||
end
|
lib/hammer_cli_csv/roles.rb | ||
---|---|---|
def create_roles_from_csv(line)
|
||
line[COUNT].to_i.times do |number|
|
||
name = namify(line[NAME], number)
|
||
filter = namify(line[FILTER], number)
|
||
filter = namify(line[FILTER], number) if line[FILTER]
|
||
|
||
if !@existing_roles[name]
|
||
print "Creating role '#{name}'..." if option_verbose?
|
||
role = @f_role_api.create({
|
||
'name' => name
|
||
})[0]
|
||
@existing_roles[name] = role['id']
|
||
else
|
||
print "Updating role '#{name}'..." if option_verbose?
|
||
@f_role_api.update({
|
||
... | ... | |
|
||
permissions = CSV.parse_line(line[PERMISSIONS], {:skip_blanks => true}).collect do |permission|
|
||
foreman_permission(:name => permission)
|
||
end
|
||
puts permissions
|
||
end if line[PERMISSIONS]
|
||
organizations = CSV.parse_line(line[ORGANIZATIONS], {:skip_blanks => true}).collect do |organization|
|
||
foreman_organization(:name => organization)
|
||
end
|
||
end if line[ORGANIZATIONS]
|
||
locations = CSV.parse_line(line[LOCATIONS], {:skip_blanks => true}).collect do |location|
|
||
foreman_location(:name => location)
|
||
end
|
||
end if line[LOCATIONS]
|
||
|
||
filter_id = foreman_filter(name, :name => filter)
|
||
if !filter_id
|
||
@f_filter_api.create({
|
||
'role_id' => @existing_roles[name],
|
||
'search' => filter,
|
||
'organization_ids' => organizations,
|
||
'location_ids' => locations
|
||
})
|
||
else
|
||
@f_filter_api.update({
|
||
'id' => filter_id,
|
||
'search' => filter,
|
||
'organization_ids' => organizations,
|
||
'location_ids' => locations,
|
||
'permission_ids' => permissions
|
||
})
|
||
if filter
|
||
filter_id = foreman_filter(name, :name => filter)
|
||
if !filter_id
|
||
@f_filter_api.create({
|
||
'role_id' => @existing_roles[name],
|
||
'search' => filter,
|
||
'organization_ids' => organizations || [],
|
||
'location_ids' => locations || [],
|
||
'permission_ids' => permissions || []
|
||
})
|
||
else
|
||
@f_filter_api.update({
|
||
'id' => filter_id,
|
||
'search' => filter,
|
||
'organization_ids' => organizations || [],
|
||
'location_ids' => locations || [],
|
||
'permission_ids' => permissions || []
|
||
})
|
||
end
|
||
end
|
||
|
||
puts "done" if option_verbose?
|
lib/hammer_cli_csv/system_groups.rb | ||
---|---|---|
'description' => line[DESCRIPTION]
|
||
})
|
||
else
|
||
print "Updating systemgroup '#{name}'..." if option_verbose?
|
||
print "Updating system group '#{name}'..." if option_verbose?
|
||
@k_systemgroup_api.update({
|
||
'organization_id' => line[ORGANIZATION],
|
||
'id' => @existing[line[ORGANIZATION]][name],
|
lib/hammer_cli_csv/users.rb | ||
---|---|---|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
#
|
||
#
|
||
# -= Users CSV =-
|
||
#
|
||
# Columns
|
||
# Login
|
||
# - Login name of the user.
|
||
# - May contain '%d' which will be replaced with current iteration number of Count
|
||
# - eg. "user%d" -> "user1"
|
||
# Count
|
||
# - Number of times to iterate on this line of the CSV file
|
||
# First Name
|
||
# Last Name
|
||
# Email
|
||
#
|
||
|
||
require 'hammer_cli'
|
||
require 'katello_api'
|
||
... | ... | |
FIRSTNAME = 'First Name'
|
||
LASTNAME = 'Last Name'
|
||
EMAIL = 'Email'
|
||
ORGANIZATIONS = 'Organizations'
|
||
LOCATIONS = 'Locations'
|
||
ROLES = 'Roles'
|
||
|
||
def export
|
||
CSV.open(option_csv_file || '/dev/stdout', 'wb', {:force_quotes => true}) do |csv|
|
||
csv << [NAME, COUNT, FIRSTNAME, LASTNAME, EMAIL]
|
||
csv << [NAME, COUNT, FIRSTNAME, LASTNAME, EMAIL, ORGANIZATIONS, LOCATIONS, ROLES]
|
||
@f_user_api.index({:per_page => 999999})[0]['results'].each do |user|
|
||
csv << [user['login'], 1, user['firstname'], user['lastname'], user['mail']]
|
||
organizations = CSV.generate do |column|
|
||
column << user['organizations'].collect do |organization|
|
||
organization['name']
|
||
end
|
||
end.delete!("\n") if user['organizations']
|
||
locations = CSV.generate do |column|
|
||
column << user['locations'].collect do |location|
|
||
location['name']
|
||
end
|
||
end.delete!("\n") if user['locations']
|
||
roles = CSV.generate do |column|
|
||
column << user['roles'].collect do |role|
|
||
role['name']
|
||
end
|
||
end.delete!("\n") if user['roles']
|
||
if user['login'] != 'admin' && !user['login'].start_with?('hidden-')
|
||
csv << [user['login'], 1, user['firstname'], user['lastname'], user['mail'], organizations, locations, roles]
|
||
end
|
||
end
|
||
end
|
||
end
|
||
... | ... | |
def create_users_from_csv(line)
|
||
line[COUNT].to_i.times do |number|
|
||
name = namify(line[NAME], number)
|
||
|
||
roles = CSV.parse_line(line[ROLES], {:skip_blanks => true}).collect do |role|
|
||
foreman_role(:name => namify(role, number))
|
||
end if line[ROLES]
|
||
organizations = CSV.parse_line(line[ORGANIZATIONS], {:skip_blanks => true}).collect do |organization|
|
||
foreman_organization(:name => organization)
|
||
end if line[ORGANIZATIONS]
|
||
locations = CSV.parse_line(line[LOCATIONS], {:skip_blanks => true}).collect do |location|
|
||
foreman_location(:name => location)
|
||
end if line[LOCATIONS]
|
||
|
||
if !@existing.include? name
|
||
print "Creating user '#{name}'... " if option_verbose?
|
||
@f_user_api.create({
|
||
... | ... | |
'firstname' => line[FIRSTNAME],
|
||
'lastname' => line[LASTNAME],
|
||
'mail' => line[EMAIL],
|
||
'password' => 'admin',
|
||
'password' => 'changeme',
|
||
'auth_source_id' => 1, # INTERNAL auth
|
||
'organization_ids' => organizations,
|
||
'location_ids' => locations,
|
||
'role_ids' => roles
|
||
}
|
||
})
|
||
else
|
||
... | ... | |
'firstname' => line[FIRSTNAME],
|
||
'lastname' => line[LASTNAME],
|
||
'mail' => line[EMAIL],
|
||
'password' => 'admin'
|
||
'password' => 'changeme',
|
||
'organization_ids' => organizations,
|
||
'location_ids' => locations,
|
||
'role_ids' => roles
|
||
}
|
||
})
|
||
end
|
test/activation_keys_test.rb | ||
---|---|---|
extend CommandTestHelper
|
||
|
||
before :each do
|
||
@activationkey_api = ApipieResourceMock.new(KatelloApi::Resources::ActivationKey)
|
||
@organization_api = ApipieResourceMock.new(KatelloApi::Resources::Organization)
|
||
@environment_api = ApipieResourceMock.new(KatelloApi::Resources::Environment)
|
||
@contentview_api = ApipieResourceMock.new(KatelloApi::Resources::ContentView)
|
||
end
|
||
|
||
context "ActivationKeysCommand" do
|
||
|
||
let(:cmd) { HammerCLICsv::ActivationKeysCommand.new("", ctx) }
|
||
|
||
context "parameters" do
|
||
it "blah" do
|
||
cmd.stubs(:get_lines).returns([
|
||
"Name,Count,Org Label,Description,Limit,Environment,Content View,System Groups",
|
||
"'akey',1,'org','some description','Unlimited','Library','Default_Content_view',"
|
||
])
|
||
cmd.run(['--csv-file=some_file', '--threads=1']).must_equal HammerCLI::EX_OK
|
||
end
|
||
end
|
||
end
|
||
end
|
test/csv_test_helper.rb | ||
---|---|---|
require "mocha/setup"
|
||
|
||
require 'hammer_cli_csv'
|
||
require 'hammer_cli_katello'
|
||
require 'hammer_cli_foreman'
|
||
|
||
def ctx
|
||
{ :adapter => :silent }
|
||
def ctx
|
||
{
|
||
:adapter => :csv,
|
||
:interactive => false
|
||
}
|
||
end
|
||
|
||
def hammer
|
||
HammerCLI::MainCommand.new("", ctx)
|
||
end
|
||
|
||
def capture
|
||
old_stdout = $stdout
|
||
old_stderr = $stderr
|
||
$stdout = stdout = StringIO.new
|
||
$stderr = stderr = StringIO.new
|
||
yield
|
||
[stdout.string, stderr.string]
|
||
ensure
|
||
$stdout = old_stdout
|
||
$stderr = old_stderr
|
||
end
|
||
|
||
def set_user(username, password='changeme')
|
||
HammerCLI::Settings.load({
|
||
:_params => {
|
||
:username => username,
|
||
:password => password,
|
||
:interactive => false
|
||
}})
|
||
end
|
||
|
||
|
test/data/activationkeys.csv | ||
---|---|---|
Name,Count,Organization,Description,Limit,Environment,Content View,System Groups,Subscriptions
|
||
damon.dials@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee","""RH00004|Red Hat Enterprise Linux Server, Standard (Physical or Virtual Nodes)"""
|
||
# jenee.jahns@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# gilbert.guerriero@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# quiana.quesnel@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# bernard.bigler@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# marietta.menzel@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# ruby.rieser@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# leonor.limberg@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# herminia.hochmuth@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# luana.larson@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# gilda.gutirrez@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# karlene.kirch@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# chelsea.calaway@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# tajuana.thies@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# dominica.dubberly@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# gregg.gault@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# boyd.buckle@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# georgeanna.griffiths@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# julio.jerabek@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# chaya.cordova@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# reinaldo.reardon@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# nancie.nassar@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# ayako.alday@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# skye.strobl@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# merle.miceli@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# sung.skipper@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# danilo.dilbeck@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# marylee.millsap@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# rolf.rueb@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# miriam.messenger@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# danae.drayer@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# stan.stokely@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# martin.magallon@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# orville.oneill@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# kourtney.kyle@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# tessa.treiber@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# kamilah.kurland@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# zelma.zemke@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# jefferson.jock@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# shirely.stowe@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# niesha.nold@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# bruce.butterworth@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# denna.debartolo@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# janay.johnson@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# kristen.kellems@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# tiny.tacy@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# dolores.delay@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# shira.sitzes@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# aron.askew@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# nydia.neil@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# theodore.talbert@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# shani.spinks@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# diedra.darrow@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# judith.joachim@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# melda.metheny@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# nannie.nobles@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# annamae.audie@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# kalyn.kimzey@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# hsiu.henningsen@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# delcie.diez@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# edris.ekhoff@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# monique.maly@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# robbi.rosendahl@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# lakeesha.loiacono@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# coralee.culbert@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# danette.dewitt@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# cinthia.cadieux@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# myron.mclawhorn@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# madeleine.magers@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# evita.epting@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# karrie.kindel@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# moses.modisette@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# winifred.wessels@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# ashton.aumann@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# guillermina.gloster@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# jeremy.jong@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# marilou.mcintosh@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# rubin.ravenscroft@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# peggie.phillips@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# evelina.elders@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# edda.elam@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# fausto.fortino@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# elena.eisert@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# mariella.molock@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# starla.scheiber@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# parker.paetzold@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# vallie.vizcaino@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# renea.rubenstein@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# lien.lipscomb@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# debby.dupuy@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# carolann.corbo@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# lee.litchfield@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# lashon.locker@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# caroll.colquitt@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# lillian.louviere@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# rafaela.rasco@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# mandie.mcquinn@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# bambi.bivona@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# jacques.joaquin@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# wes.wallner@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# retta.rosso@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# melia.meche@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# nga.nordquist@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# georgine.grimmett@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# elden.easley@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# van.villanveva@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# shemika.spikes@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# bettina.budniewski@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# yun.yarberry@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# mac.malmberg@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# rory.rollinson@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Employee"
|
||
# silva.sotelo@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
# le.leggett@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
# eartha.edie@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
# tenisha.tinajero@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
# hien.hamby@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
# milford.mize@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
# elnora.efaw@megacorp.org,1,megacorp,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
damon.dials@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee","""RH00004|Red Hat Enterprise Linux Server, Standard (Physical or Virtual Nodes)"""
|
||
jenee.jahns@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
gilbert.guerriero@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
quiana.quesnel@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
bernard.bigler@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
marietta.menzel@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
ruby.rieser@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
leonor.limberg@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
herminia.hochmuth@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
luana.larson@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
gilda.gutirrez@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
karlene.kirch@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
chelsea.calaway@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
tajuana.thies@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
dominica.dubberly@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
gregg.gault@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
boyd.buckle@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
georgeanna.griffiths@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
julio.jerabek@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
chaya.cordova@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
reinaldo.reardon@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
nancie.nassar@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
ayako.alday@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
skye.strobl@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
merle.miceli@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
sung.skipper@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
danilo.dilbeck@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
marylee.millsap@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
rolf.rueb@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
miriam.messenger@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
danae.drayer@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
stan.stokely@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
martin.magallon@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
orville.oneill@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
kourtney.kyle@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
tessa.treiber@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
kamilah.kurland@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
zelma.zemke@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
jefferson.jock@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
shirely.stowe@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
niesha.nold@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
bruce.butterworth@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
denna.debartolo@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
janay.johnson@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
kristen.kellems@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
tiny.tacy@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
dolores.delay@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
shira.sitzes@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
aron.askew@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
nydia.neil@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
theodore.talbert@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
shani.spinks@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
diedra.darrow@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
judith.joachim@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
melda.metheny@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
nannie.nobles@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
annamae.audie@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
kalyn.kimzey@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
hsiu.henningsen@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
delcie.diez@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
edris.ekhoff@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
monique.maly@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
robbi.rosendahl@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
lakeesha.loiacono@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
coralee.culbert@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
danette.dewitt@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
cinthia.cadieux@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
myron.mclawhorn@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
madeleine.magers@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
evita.epting@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
karrie.kindel@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
moses.modisette@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
winifred.wessels@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
ashton.aumann@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
guillermina.gloster@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
jeremy.jong@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
marilou.mcintosh@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
rubin.ravenscroft@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
peggie.phillips@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
evelina.elders@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
edda.elam@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
fausto.fortino@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
elena.eisert@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
mariella.molock@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
starla.scheiber@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
parker.paetzold@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
vallie.vizcaino@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
renea.rubenstein@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
lien.lipscomb@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
debby.dupuy@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
carolann.corbo@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
lee.litchfield@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
lashon.locker@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
caroll.colquitt@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
lillian.louviere@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
rafaela.rasco@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
mandie.mcquinn@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
bambi.bivona@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
jacques.joaquin@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
wes.wallner@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
retta.rosso@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
melia.meche@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
nga.nordquist@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
georgine.grimmett@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
elden.easley@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
van.villanveva@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
shemika.spikes@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
bettina.budniewski@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
yun.yarberry@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
mac.malmberg@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
rory.rollinson@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Employee"
|
||
silva.sotelo@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
le.leggett@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
eartha.edie@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
tenisha.tinajero@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
hien.hamby@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
milford.mize@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Contractor"
|
||
elnora.efaw@megacorp.com,1,Mega Corporation,"Individual account",1,Library,Default Organization View,"Contractor"
|
test/data/domains.csv | ||
---|---|---|
"Name","Count","Full Name","Organizations"
|
||
"megacorp.com","1","","megacorp"
|
||
"demo.megacorp.com","1","","megacorp"
|
||
"qa.lab.tlv.megacorp.com","1","QA","megacorp"
|
||
"sat.lab.tlv.megacorp.com","1","SATLAB","megacorp"
|
||
"test.megacorp.com","1","","megacorp"
|
||
"tlv.megacorp.com","1","","megacorp"
|
||
"virt.bos.megacorp.com","1","","megacorp"
|
||
"megacorp.com","1","","Mega Corporation"
|
||
"demo.megacorp.com","1","","Mega Corporation"
|
||
"qa.lab.tlv.megacorp.com","1","QA","Mega Corporation"
|
||
"sat.lab.tlv.megacorp.com","1","SATLAB","Mega Corporation"
|
||
"test.megacorp.com","1","","Mega Corporation"
|
||
"tlv.megacorp.com","1","","Mega Corporation"
|
||
"virt.bos.megacorp.com","1","","Mega Corporation"
|
test/data/hosts.csv | ||
---|---|---|
Name,Count,Organization,Environment,Operating System,Architecture,MAC Address,Domain,Partition Table
|
||
dhcp129-0%02d.megacorp.com,255,Mega Corporation,Development,RHEL 6.4,x86_64,"01:FE:B5:E0:70:%02x",megacorp.com,RedHat default
|
||
dhcp129-%03d.megacorp.com,255,Mega Corporation,Development,RHEL 6.4,x86_64,"01:FE:B5:E0:70:%02x",megacorp.com,RedHat default
|
||
# dhcp129-1%02d.megacorp.com,255,Mega Corporation,Development,RHEL 6.4,x86_64,"01:FE:B5:E1:70:%02x",megacorp.com,RedHat default
|
||
# dhcp129-2%02d.megacorp.com,255,Mega Corporation,Development,RHEL 6.4,x86_64,"01:FE:B5:E2:70:%02x",megacorp.com,RedHat default
|
||
# dhcp129-3%02d.megacorp.com,255,Mega Corporation,Development,RHEL 6.4,x86_64,"01:FE:B5:E3:70:%02x",megacorp.com,RedHat default
|
test/data/lifecycleenvironments.csv | ||
---|---|---|
"Name","Count","Label","Organization","Prior Environment","Description"
|
||
"Development","1","Development","megacorp","Library",""
|
||
"Testing","1","Testing","megacorp","Development",""
|
||
"Stage","1","Stage","megacorp","Testing",""
|
||
"Production","1","Production","megacorp","Stage",""
|
||
"OpenStack","1","OpenStack","megacorp","Library",""
|
||
"Development","1","Development","Mega Corporation","Library",""
|
||
"Testing","1","Testing","Mega Corporation","Development",""
|
||
"Stage","1","Stage","Mega Corporation","Testing",""
|
||
"Production","1","Production","Mega Corporation","Stage",""
|
||
"OpenStack","1","OpenStack","Mega Corporation","Library",""
|
test/data/locations.csv | ||
---|---|---|
Name,Count
|
||
Asia Pacific (Tokyo) Region,1
|
||
Asia Pacific (Singapore) Region,1
|
||
Asia Pacific (Sydney) Region,1
|
||
EU (Ireland) Region,1
|
||
South America (Sao Paulo) Region,1
|
||
US East (Northern Virginia) Region,1
|
||
US West (Northern California) Region,1
|
||
US West (Oregon) Region,1
|
test/data/organizations.csv | ||
---|---|---|
"Name","Count","Org Label","Description"
|
||
"Mega Corporation","1","megacorp","The number one mega company in the world!"
|
||
"Mega Subsidiary","1","subcorp","The number one subsidiary of the number one mega company in the world!"
|
||
|
test/data/partitiontables.csv | ||
---|---|---|
"Name","Count","OS Family","Layout"
|
||
"ext4 default","1","Redhat","zerombr
|
||
"Name","Count","OS Family","Operating Systems","Layout"
|
||
"ext4 default","1","Redhat",,"zerombr
|
||
clearpart --all --initlabel
|
||
part /boot --fstype=ext4 --size=500
|
||
part / --fstype=ext4 --size=1024 --grow
|
||
part swap --recommended"
|
||
"F16 / Grub2","1","Redhat","part biosboot --fstype=biosboot --size=1
|
||
"F16 / Grub2","1","Redhat",,"part biosboot --fstype=biosboot --size=1
|
||
zerombr
|
||
clearpart --all --initlabel
|
||
part /boot --fstype=ext4 --size=500
|
||
part / --fstype=ext4 --size=1024 --grow
|
||
part swap --recommended"
|
||
"Katello Fedora Default","1","Redhat","zerombr
|
||
"Katello Fedora Default","1","Redhat",,"zerombr
|
||
clearpart --all --initlabel
|
||
part /boot --fstype ext3 --size=100 --asprimary
|
||
part / --fstype ext3 --size=1024 --grow
|
||
part swap --recommended"
|
||
"OpenStack Storage","1","Debian","d-i partman-auto/disk string /dev/vda
|
||
"OpenStack Storage","1","Debian",,"d-i partman-auto/disk string /dev/vda
|
||
d-i partman-auto/method string lvm
|
||
|
||
d-i partman-lvm/device_remove_lvm boolean true
|
||
... | ... | |
d-i partman/confirm boolean true
|
||
d-i partman/confirm_nooverwrite boolean true
|
||
"
|
||
"RedHat default","1","Redhat","zerombr yes
|
||
"RedHat default","1","Redhat","RHEL 6.4,RHEL 6.3","zerombr yes
|
||
clearpart --all --initlabel
|
||
part /boot --fstype ext3 --size=100 --asprimary
|
||
part / --fstype ext3 --size=1024 --grow
|
||
part swap --recommended"
|
||
"Solaris medium disk mirrored","1","Solaris","filesys mirror:d10 c1t0d0s0 c1t1d0s0 16000 /
|
||
"Solaris medium disk mirrored","1","Solaris",,"filesys mirror:d10 c1t0d0s0 c1t1d0s0 16000 /
|
||
filesys mirror:d20 c1t0d0s1 c1t1d0s1 8000 swap
|
||
filesys mirror:d40 c1t0d0s4 c1t1d0s4 free /var/tmp
|
||
metadb c1t0d0s7 size 8192 count 3
|
||
metadb c1t1d0s7 size 8192 count 3
|
||
"
|
||
"Solaris small disk c1t0","1","Solaris","filesys c1t0d0s0 7000 /
|
||
"Solaris small disk c1t0","1","Solaris",,"filesys c1t0d0s0 7000 /
|
||
filesys c1t0d0s1 1000 swap
|
||
filesys c1t0d0s3 15 unnamed
|
||
filesys c1t0d0s7 free /tmp2
|
||
"
|
||
"Suse Entire SCSI Disk","1","Suse"," <partitioning config:type=""list"">
|
||
"Suse Entire SCSI Disk","1","Suse",," <partitioning config:type=""list"">
|
||
<drive>
|
||
<device>/dev/sda</device>
|
||
<use>all</use>
|
||
</drive>
|
||
</partitioning>"
|
||
"Suse Entire Virtual Disk","1","Suse"," <partitioning config:type=""list"">
|
||
"Suse Entire Virtual Disk","1","Suse",," <partitioning config:type=""list"">
|
||
<drive>
|
||
<device>/dev/vda</device>
|
||
<use>all</use>
|
||
</drive>
|
||
</partitioning>"
|
||
"Ubuntu custom LVM","1","Debian","d-i partman-auto/disk string /dev/vda
|
||
"Ubuntu custom LVM","1","Debian",,"d-i partman-auto/disk string /dev/vda
|
||
d-i partman-auto/method string lvm
|
||
|
||
d-i partman-lvm/device_remove_lvm boolean true
|
||
... | ... | |
d-i partman/confirm boolean true
|
||
d-i partman/confirm_nooverwrite boolean true
|
||
"
|
||
"Ubuntu default","1","Debian","d-i partman-auto/disk string /dev/vda
|
||
"Ubuntu default","1","Debian",,"d-i partman-auto/disk string /dev/vda
|
||
d-i partman-auto/method string regular
|
||
d-i partman-auto/init_automatically_partition select Guided - use entire disk
|
||
d-i partman/confirm_write_new_label boolean true
|
||
... | ... | |
Finish partitioning and write changes to disk
|
||
d-i partman/confirm boolean true
|
||
"
|
||
"vg-redhat","1","Redhat","zerombr yes
|
||
"vg-redhat","1","Redhat",,"zerombr yes
|
||
clearpart --all --initlabel
|
||
part /boot --fstype ext4 --size 200 --asprimary
|
||
part pv.01 --grow --size=1024
|
||
volgroup <%= shortname %> pv.01
|
||
logvol / --fstype=ext4 --name=root --vgname=<%= shortname %> --grow --size=1024
|
||
logvol swap --name=swap --vgname=<%= shortname %> --recommended"
|
||
"Windows Entire SCSI Disk","1","Windows"," <partitioning config:type=""list"">
|
||
"Windows Entire SCSI Disk","1","Windows",," <partitioning config:type=""list"">
|
||
<drive>
|
||
<device>/stuff</device>
|
||
<use>all</use>
|
||
</drive>
|
||
</partitioning>"
|
||
"Windows Entire Virtual Disk","1","Windows"," <partitioning config:type=""list"">
|
||
"Windows Entire Virtual Disk","1","Windows",," <partitioning config:type=""list"">
|
||
<drive>
|
||
<device>/data</device>
|
||
<use>all</use>
|
test/data/products.csv | ||
---|---|---|
Name,Count,Organization,Provider,Repository,Repository Type,Repository Url
|
||
Point of Sale,1,megacorp,MegaCorp,katello-1.4-client,yum,http://fedorapeople.org/groups/katello/releases/yum/1.4-client/RHEL/6Server/x86_64/
|
||
katello-1.4,1,megacorp,MegaCorp,katello-1.4,yum,http://fedorapeople.org/groups/katello/releases/yum/1.4/RHEL/6Server/x86_64/
|
Also available in: Unified diff
roles-test - wip
roles-test - users now get roles, orgs, and locations