hammer_cli_csv 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/config/cli_config.yml +9 -24
- data/lib/hammer_cli_csv/activation_keys.rb +220 -95
- data/lib/hammer_cli_csv/architectures.rb +7 -11
- data/lib/hammer_cli_csv/base.rb +67 -41
- data/lib/hammer_cli_csv/compute_profiles.rb +11 -15
- data/lib/hammer_cli_csv/compute_resources.rb +11 -15
- data/lib/hammer_cli_csv/containers.rb +10 -12
- data/lib/hammer_cli_csv/content_hosts.rb +285 -203
- data/lib/hammer_cli_csv/content_view_filters.rb +32 -36
- data/lib/hammer_cli_csv/content_views.rb +33 -37
- data/lib/hammer_cli_csv/csv.rb +17 -1
- data/lib/hammer_cli_csv/domains.rb +15 -19
- data/lib/hammer_cli_csv/export.rb +13 -5
- data/lib/hammer_cli_csv/host_collections.rb +20 -22
- data/lib/hammer_cli_csv/host_groups.rb +73 -65
- data/lib/hammer_cli_csv/hosts.rb +30 -34
- data/lib/hammer_cli_csv/import.rb +24 -10
- data/lib/hammer_cli_csv/installation_media.rb +74 -0
- data/lib/hammer_cli_csv/job_templates.rb +37 -41
- data/lib/hammer_cli_csv/lifecycle_environments.rb +15 -19
- data/lib/hammer_cli_csv/locations.rb +4 -6
- data/lib/hammer_cli_csv/operating_systems.rb +17 -21
- data/lib/hammer_cli_csv/organizations.rb +11 -13
- data/lib/hammer_cli_csv/partition_tables.rb +17 -21
- data/lib/hammer_cli_csv/products.rb +200 -92
- data/lib/hammer_cli_csv/provisioning_templates.rb +19 -23
- data/lib/hammer_cli_csv/puppet_environments.rb +8 -12
- data/lib/hammer_cli_csv/puppet_facts.rb +20 -24
- data/lib/hammer_cli_csv/puppet_reports.rb +47 -51
- data/lib/hammer_cli_csv/reports.rb +6 -10
- data/lib/hammer_cli_csv/roles.rb +12 -16
- data/lib/hammer_cli_csv/settings.rb +8 -6
- data/lib/hammer_cli_csv/smart_proxies.rb +9 -13
- data/lib/hammer_cli_csv/splice.rb +1 -3
- data/lib/hammer_cli_csv/subnets.rb +24 -28
- data/lib/hammer_cli_csv/subscriptions.rb +39 -91
- data/lib/hammer_cli_csv/sync_plans.rb +20 -24
- data/lib/hammer_cli_csv/users.rb +25 -29
- data/lib/hammer_cli_csv/utils/subscriptions.rb +130 -0
- data/lib/hammer_cli_csv/version.rb +1 -1
- data/lib/hammer_cli_csv.rb +2 -2
- data/test/csv_test.rb +32 -0
- data/test/csv_test_helper.rb +17 -2
- data/test/data/content-hosts.csv +3 -2
- data/test/data/hosts.csv +0 -11
- data/test/data/settings.csv +1 -0
- data/test/data/setup/content-hosts.csv +1 -0
- data/test/data/setup/content-views.csv +2 -0
- data/test/data/setup/lifecycle-environments.csv +5 -0
- data/test/data/setup/locations.csv +6 -0
- data/test/data/setup/organizations.csv +2 -0
- data/test/data/setup/subscriptions.csv +5 -0
- data/test/data/subscriptions.csv +15 -17
- data/test/export_test.rb +27 -0
- data/test/fixtures/vcr_cassettes/apipie.yml +18528 -0
- data/test/fixtures/vcr_cassettes/resources/activation_keys_import/create_and_update.yml +38033 -0
- data/test/fixtures/vcr_cassettes/resources/content_hosts_export/export.yml +18846 -0
- data/test/fixtures/vcr_cassettes/resources/content_hosts_export/export_subscriptions.yml +323 -0
- data/test/fixtures/vcr_cassettes/resources/content_hosts_import/create_and_update.yml +41884 -0
- data/test/fixtures/vcr_cassettes/resources/content_hosts_import/import_single_line.yml +38248 -0
- data/test/fixtures/vcr_cassettes/resources/settings_import/update_settings.yml +18832 -0
- data/test/fixtures/vcr_cassettes/resources/settings_import/update_settings_continue.yml +316 -0
- data/test/fixtures/vcr_cassettes/resources/subscriptions_import/manifest_does_not_exist.yml +18785 -0
- data/test/fixtures/vcr_cassettes/setup/setup_content_views/setup.yml +19090 -0
- data/test/fixtures/vcr_cassettes/setup/setup_lifecycle_environments/setup.yml +924 -0
- data/test/fixtures/vcr_cassettes/setup/setup_locations/setup.yml +21102 -0
- data/test/fixtures/vcr_cassettes/setup/setup_organizations/setup.yml +19278 -0
- data/test/fixtures/vcr_cassettes/setup/setup_subscriptions/setup.yml +419 -0
- data/test/import_test.rb +20 -25
- data/test/resources/activation_keys_test.rb +72 -0
- data/test/resources/content_hosts_test.rb +132 -0
- data/test/resources/settings_test.rb +81 -0
- data/test/resources/subscriptions_test.rb +56 -0
- data/test/setup/setup_content_views.rb +17 -0
- data/test/setup/setup_lifecycle_environments.rb +17 -0
- data/test/setup/setup_locations.rb +17 -0
- data/test/setup/setup_organizations.rb +17 -0
- data/test/setup/setup_subscriptions.rb +20 -0
- data/test/setup/setup_test.rb +10 -0
- data/test/test_runner.rb +175 -0
- data/test/vcr_setup.rb +54 -0
- metadata +77 -13
- data/lib/hammer_cli_csv/exception_handler.rb +0 -42
- data/lib/hammer_cli_csv/installation_medias.rb +0 -77
- data/test/content_hosts_test.rb +0 -61
- data/test/settings_test.rb +0 -30
@@ -6,21 +6,32 @@ module HammerCLICsv
|
|
6
6
|
command_name 'import'
|
7
7
|
desc 'import by directory'
|
8
8
|
|
9
|
+
def self.supported?
|
10
|
+
true
|
11
|
+
end
|
12
|
+
|
9
13
|
option %w(-v --verbose), :flag, _('be verbose')
|
10
14
|
option %w(--threads), 'THREAD_COUNT', _('Number of threads to hammer with'),
|
11
15
|
:default => 1, :hidden => true
|
12
16
|
option '--dir', 'DIRECTORY', _('directory to import from')
|
13
17
|
option %w(--organization), 'ORGANIZATION', _('Only process organization matching this name')
|
14
|
-
option %w(--prefix), 'PREFIX', _('Prefix for all name columns')
|
18
|
+
option %w(--prefix), 'PREFIX', _('Prefix for all name columns'),
|
19
|
+
:hidden => true
|
15
20
|
|
16
|
-
RESOURCES = %w(
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
+
RESOURCES = %w(
|
22
|
+
settings organizations locations puppet_environments operating_systems
|
23
|
+
domains architectures partition_tables lifecycle_environments host_collections
|
24
|
+
provisioning_templates
|
25
|
+
subscriptions products content_views content_view_filters activation_keys
|
26
|
+
hosts content_hosts smart_proxies compute_resources reports roles users
|
27
|
+
)
|
28
|
+
SUPPORTED_RESOURCES = %w(
|
29
|
+
settings
|
30
|
+
)
|
21
31
|
RESOURCES.each do |resource|
|
22
32
|
dashed = resource.gsub('_', '-')
|
23
|
-
option "--#{dashed}", 'FILE', "csv file for #{dashed}"
|
33
|
+
option "--#{dashed}", 'FILE', "csv file for #{dashed}",
|
34
|
+
:hidden => !SUPPORTED_RESOURCES.include?(resource)
|
24
35
|
end
|
25
36
|
|
26
37
|
def execute
|
@@ -67,15 +78,18 @@ module HammerCLICsv
|
|
67
78
|
|
68
79
|
def hammer_resource(resource)
|
69
80
|
return if !self.send("option_#{resource}") && !option_dir
|
70
|
-
options_file = "#{option_dir}/#{resource.gsub('_', '-')}.csv"
|
81
|
+
options_file = option_dir ? "#{option_dir}/#{resource.gsub('_', '-')}.csv" : self.send("option_#{resource}")
|
71
82
|
unless options_file_exists? options_file
|
72
83
|
if option_dir
|
73
|
-
|
84
|
+
return unless SUPPORTED_RESOURCES.include?(resource)
|
85
|
+
puts _("Skipping %{resource} because '%{options_file}' does not exist") %
|
86
|
+
{:resource => resource, :options_file => options_file} if option_verbose?
|
74
87
|
return
|
75
88
|
end
|
76
89
|
raise "File for #{resource} '#{options_file}' does not exist"
|
77
90
|
end
|
78
|
-
puts _("Importing
|
91
|
+
puts _("Importing %{resource} from '%{options_file}'") %
|
92
|
+
{:resource => resource, :options_file => options_file} if option_verbose?
|
79
93
|
|
80
94
|
args = %W( csv #{resource.gsub('_', '-')} --file #{options_file} )
|
81
95
|
args << '-v' if option_verbose?
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module HammerCLICsv
|
2
|
+
class CsvCommand
|
3
|
+
class InstallationMediaCommand < BaseCommand
|
4
|
+
command_name 'installation-media'
|
5
|
+
desc 'import or export media'
|
6
|
+
|
7
|
+
ORGANIZATIONS = 'Organizations'
|
8
|
+
LOCATIONS = 'Locations'
|
9
|
+
PATH = 'Path'
|
10
|
+
OSFAMILY = 'OS Family'
|
11
|
+
OPERATING_SYSTEMS = 'Operating Systems'
|
12
|
+
|
13
|
+
def export(csv)
|
14
|
+
csv << [NAME, ORGANIZATIONS, LOCATIONS, PATH, OSFAMILY, OPERATING_SYSTEMS]
|
15
|
+
@api.resource(:media).call(:index, {:per_page => 999999})['results'].each do |medium|
|
16
|
+
medium = @api.resource(:media).call(:show, :id => medium['id'])
|
17
|
+
name = medium['name']
|
18
|
+
organizations = export_column(medium, 'organizations', 'name')
|
19
|
+
locations = export_column(medium, 'locations', 'name')
|
20
|
+
count = 1
|
21
|
+
path = medium['path']
|
22
|
+
os_family = medium['os_family']
|
23
|
+
operating_systems = export_column(medium, 'operatingsystems', 'title')
|
24
|
+
csv << [name, organizations, locations, path, os_family, operating_systems]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def import
|
29
|
+
@existing = {}
|
30
|
+
@api.resource(:media).call(:index, {:per_page => 999999})['results'].each do |medium|
|
31
|
+
@existing[medium['name']] = medium['id'] if medium
|
32
|
+
end
|
33
|
+
|
34
|
+
thread_import do |line|
|
35
|
+
create_from_csv(line)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_from_csv(line)
|
40
|
+
params = {
|
41
|
+
'medium' => {
|
42
|
+
'organization_ids' => collect_column(line[ORGANIZATIONS]) do |organization|
|
43
|
+
foreman_organization(:name => organization)
|
44
|
+
end,
|
45
|
+
'location_ids' => collect_column(line[LOCATIONS]) do |location|
|
46
|
+
foreman_location(:name => location)
|
47
|
+
end,
|
48
|
+
'path' => line[PATH],
|
49
|
+
'os_family' => line[OSFAMILY],
|
50
|
+
'operatingsystem_ids' => collect_column(line[OPERATING_SYSTEMS]) do |os|
|
51
|
+
foreman_operatingsystem(:name => os)
|
52
|
+
end
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
count(line[COUNT]).times do |number|
|
57
|
+
name = namify(line[NAME], number)
|
58
|
+
params['medium']['name'] = name
|
59
|
+
|
60
|
+
if !@existing.include? name
|
61
|
+
print _("Creating installation medium '%{name}'... ") % {:name => name} if option_verbose?
|
62
|
+
medium = @api.resource(:media).call(:create, params)
|
63
|
+
@existing[name] = medium['id']
|
64
|
+
else
|
65
|
+
print _("Updating installation medium '%{name}'... ") % {:name => name} if option_verbose?
|
66
|
+
params['id'] = @existing[name]
|
67
|
+
medium = @api.resource(:media).call(:update, params)
|
68
|
+
end
|
69
|
+
puts _('done') if option_verbose?
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -17,48 +17,46 @@ module HammerCLICsv
|
|
17
17
|
INPUT_TYPE = 'Input:Type'
|
18
18
|
INPUT_PARAMETERS = 'Input:Parameters'
|
19
19
|
|
20
|
-
def export
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
csv << [name, organizations, locations, description, job, provider, snippet, template['template']]
|
20
|
+
def export(csv)
|
21
|
+
csv << [NAME, ORGANIZATIONS, LOCATIONS, DESCRIPTION, JOB, PROVIDER, SNIPPET, TEMPLATE,
|
22
|
+
INPUT_NAME, INPUT_DESCRIPTION, INPUT_REQUIRED, INPUT_TYPE, INPUT_PARAMETERS]
|
23
|
+
@api.resource(:job_templates).call(:index, {
|
24
|
+
:per_page => 999999
|
25
|
+
})['results'].each do |template_id|
|
26
|
+
template = @api.resource(:job_templates).call(:show, {:id => template_id['id']})
|
27
|
+
next if template['locked']
|
28
|
+
next unless option_organization.nil? || template['organizations'].detect { |org| org['name'] == option_organization }
|
29
|
+
name = template['name']
|
30
|
+
description = template['description_format']
|
31
|
+
job = template['job_category']
|
32
|
+
snippet = template['snippet'] ? 'Yes' : 'No'
|
33
|
+
provider = template['provider_type']
|
34
|
+
organizations = export_column(template, 'organizations', 'name')
|
35
|
+
locations = export_column(template, 'locations', 'name')
|
36
|
+
csv << [name, organizations, locations, description, job, provider, snippet, template['template']]
|
38
37
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
50
|
-
when /fact/
|
51
|
-
input_name = input['fact_name']
|
52
|
-
when /variable/
|
53
|
-
input_name = input['variable_name']
|
54
|
-
when /puppet_parameter/
|
55
|
-
input_name = "#{input['puppet_class_name']}|#{input['puppet_parameter_name']}"
|
56
|
-
else
|
57
|
-
raise _("Unknown job template input type '%{type}'") % {:type => input['input_type']}
|
38
|
+
template_columns = [name] + Array.new(7)
|
39
|
+
@api.resource(:template_inputs).call(:index, {
|
40
|
+
:template_id => template['id']
|
41
|
+
})['results'].each do|input|
|
42
|
+
input_field = nil
|
43
|
+
input_options = nil
|
44
|
+
case input['input_type']
|
45
|
+
when /user/
|
46
|
+
input_name = export_column(input, 'options') do |value|
|
47
|
+
value
|
58
48
|
end
|
59
|
-
|
60
|
-
|
49
|
+
when /fact/
|
50
|
+
input_name = input['fact_name']
|
51
|
+
when /variable/
|
52
|
+
input_name = input['variable_name']
|
53
|
+
when /puppet_parameter/
|
54
|
+
input_name = "#{input['puppet_class_name']}|#{input['puppet_parameter_name']}"
|
55
|
+
else
|
56
|
+
raise _("Unknown job template input type '%{type}'") % {:type => input['input_type']}
|
61
57
|
end
|
58
|
+
required = input['required'] ? 'Yes' : 'No'
|
59
|
+
csv << template_columns + [input['name'], input['description'], required, input['input_type'], input_name]
|
62
60
|
end
|
63
61
|
end
|
64
62
|
end
|
@@ -138,8 +136,6 @@ module HammerCLICsv
|
|
138
136
|
# end
|
139
137
|
|
140
138
|
end
|
141
|
-
rescue RuntimeError => e
|
142
|
-
raise "#{e}\n #{line[NAME]}"
|
143
139
|
end
|
144
140
|
|
145
141
|
def create_template(line, number)
|
@@ -8,24 +8,22 @@ module HammerCLICsv
|
|
8
8
|
PRIORENVIRONMENT = 'Prior Environment'
|
9
9
|
DESCRIPTION = 'Description'
|
10
10
|
|
11
|
-
def export
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
next if option_organization && organization['name'] != option_organization
|
11
|
+
def export(csv)
|
12
|
+
csv << [NAME, ORGANIZATION, PRIORENVIRONMENT, DESCRIPTION]
|
13
|
+
@api.resource(:organizations).call(:index, {
|
14
|
+
'per_page' => 999999
|
15
|
+
})['results'].each do |organization|
|
16
|
+
next if option_organization && organization['name'] != option_organization
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
18
|
+
@api.resource(:lifecycle_environments).call(:index, {
|
19
|
+
'per_page' => 999999,
|
20
|
+
'organization_id' => organization['id']
|
21
|
+
})['results'].sort { |a, b| a['created_at'] <=> b['created_at'] }.each do |environment|
|
22
|
+
if environment['name'] != 'Library'
|
23
|
+
name = environment['name']
|
24
|
+
prior = environment['prior']['name']
|
25
|
+
description = environment['description']
|
26
|
+
csv << [name, organization['name'], prior, description]
|
29
27
|
end
|
30
28
|
end
|
31
29
|
end
|
@@ -76,8 +74,6 @@ module HammerCLICsv
|
|
76
74
|
end
|
77
75
|
print "done\n" if option_verbose?
|
78
76
|
end
|
79
|
-
rescue RuntimeError => e
|
80
|
-
raise "#{e}\n #{line}"
|
81
77
|
end
|
82
78
|
end
|
83
79
|
end
|
@@ -6,12 +6,10 @@ module HammerCLICsv
|
|
6
6
|
|
7
7
|
PARENT = 'Parent Location'
|
8
8
|
|
9
|
-
def export
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
csv << [location['name'], '']
|
14
|
-
end
|
9
|
+
def export(csv)
|
10
|
+
csv << [NAME, PARENT]
|
11
|
+
@api.resource(:locations).call(:index, {:per_page => 999999})['results'].each do |location|
|
12
|
+
csv << [location['name'], '']
|
15
13
|
end
|
16
14
|
end
|
17
15
|
|
@@ -13,26 +13,24 @@ module HammerCLICsv
|
|
13
13
|
PROVISIONING_TEMPLATES = 'Provisioning Templates'
|
14
14
|
PARAMETERS = 'Parameters'
|
15
15
|
|
16
|
-
def export
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
@api.resource(:operatingsystems).call(:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
"#{parameter['name']}|#{parameter['value']}"
|
32
|
-
end
|
33
|
-
csv << [name, description, family, password_hash, partition_tables, architectures,
|
34
|
-
media, partition_tables, parameters]
|
16
|
+
def export(csv)
|
17
|
+
csv << [NAME, DESCRIPTION, FAMILY, PASSWORD_HASH, PARTITION_TABLES, ARCHITECTURES, MEDIA,
|
18
|
+
PROVISIONING_TEMPLATES, PARAMETERS]
|
19
|
+
@api.resource(:operatingsystems).call(:index, {:per_page => 999999})['results'].each do |operatingsystem_id|
|
20
|
+
operatingsystem = @api.resource(:operatingsystems).call(:show, {:id => operatingsystem_id['id']})
|
21
|
+
name = build_os_name(operatingsystem['name'], operatingsystem['major'], operatingsystem['minor'])
|
22
|
+
description = operatingsystem['description']
|
23
|
+
family = operatingsystem['family']
|
24
|
+
password_hash = operatingsystem['password_hash']
|
25
|
+
partition_tables = export_column(operatingsystem, 'ptables', 'name')
|
26
|
+
architectures = export_column(operatingsystem, 'architectures', 'name')
|
27
|
+
media = export_column(operatingsystem, 'media', 'name')
|
28
|
+
partition_tables = export_column(operatingsystem, 'ptables', 'name')
|
29
|
+
parameters = export_column(operatingsystem, 'parameters') do |parameter|
|
30
|
+
"#{parameter['name']}|#{parameter['value']}"
|
35
31
|
end
|
32
|
+
csv << [name, description, family, password_hash, partition_tables, architectures,
|
33
|
+
media, partition_tables, parameters]
|
36
34
|
end
|
37
35
|
end
|
38
36
|
|
@@ -82,8 +80,6 @@ module HammerCLICsv
|
|
82
80
|
end
|
83
81
|
print "done\n" if option_verbose?
|
84
82
|
end
|
85
|
-
rescue RuntimeError => e
|
86
|
-
raise "#{e}\n #{line}"
|
87
83
|
end
|
88
84
|
end
|
89
85
|
end
|
@@ -7,20 +7,18 @@ module HammerCLICsv
|
|
7
7
|
LABEL = 'Label'
|
8
8
|
DESCRIPTION = 'Description'
|
9
9
|
|
10
|
-
def export
|
11
|
-
|
12
|
-
csv << [NAME, LABEL, DESCRIPTION]
|
10
|
+
def export(csv)
|
11
|
+
csv << [NAME, LABEL, DESCRIPTION]
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
13
|
+
if @server_status['release'] == 'Headpin'
|
14
|
+
@headpin.get(:organizations).each do |organization|
|
15
|
+
next if option_organization && organization['name'] != option_organization
|
16
|
+
csv << [organization['name'], organization['label'], organization['description']]
|
17
|
+
end
|
18
|
+
else
|
19
|
+
@api.resource(:organizations).call(:index, {:per_page => 999999})['results'].each do |organization|
|
20
|
+
next if option_organization && organization['name'] != option_organization
|
21
|
+
csv << [organization['name'], organization['label'], organization['description']]
|
24
22
|
end
|
25
23
|
end
|
26
24
|
end
|
@@ -10,7 +10,7 @@ module HammerCLICsv
|
|
10
10
|
OPERATINGSYSTEMS = 'Operating Systems'
|
11
11
|
LAYOUT = 'Layout'
|
12
12
|
|
13
|
-
def export
|
13
|
+
def export(csv)
|
14
14
|
# TODO: partition-tables do not return their organizations or locations
|
15
15
|
# http://projects.theforeman.org/issues/11175
|
16
16
|
organizations_map = {}
|
@@ -28,26 +28,24 @@ module HammerCLICsv
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
@api.resource(:ptables).call(:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
operatingsystems = export_column(ptable, 'operatingsystems', 'title')
|
39
|
-
|
40
|
-
organizations = CSV.generate do |column|
|
41
|
-
column << organizations_map[name] if organizations_map[name]
|
42
|
-
end
|
43
|
-
organizations.delete!("\n")
|
44
|
-
locations = CSV.generate do |column|
|
45
|
-
column << locations_map[name] if locations_map[name]
|
46
|
-
end
|
47
|
-
locations.delete!("\n")
|
31
|
+
csv << [NAME, ORGANIZATIONS, LOCATIONS, OSFAMILY, OPERATINGSYSTEMS, LAYOUT]
|
32
|
+
@api.resource(:ptables).call(:index, {:per_page => 999999})['results'].each do |ptable|
|
33
|
+
ptable = @api.resource(:ptables).call(:show, {'id' => ptable['id']})
|
34
|
+
name = ptable['name']
|
35
|
+
osfamily = ptable['os_family']
|
36
|
+
layout = ptable['layout']
|
37
|
+
operatingsystems = export_column(ptable, 'operatingsystems', 'title')
|
48
38
|
|
49
|
-
|
39
|
+
organizations = CSV.generate do |column|
|
40
|
+
column << organizations_map[name] if organizations_map[name]
|
50
41
|
end
|
42
|
+
organizations.delete!("\n")
|
43
|
+
locations = CSV.generate do |column|
|
44
|
+
column << locations_map[name] if locations_map[name]
|
45
|
+
end
|
46
|
+
locations.delete!("\n")
|
47
|
+
|
48
|
+
csv << [name, organizations, locations, osfamily, operatingsystems, layout]
|
51
49
|
end
|
52
50
|
end
|
53
51
|
|
@@ -102,8 +100,6 @@ module HammerCLICsv
|
|
102
100
|
end
|
103
101
|
print "done\n" if option_verbose?
|
104
102
|
end
|
105
|
-
rescue RuntimeError => e
|
106
|
-
raise "#{e}\n #{line}"
|
107
103
|
end
|
108
104
|
end
|
109
105
|
end
|