hammer_cli_import 0.10.23 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6a49f9fd808fe88a5293f365ee77494e9f9a04a0
4
- data.tar.gz: c1c86671d4c244ba77df04e81f503829f0ecfb4d
3
+ metadata.gz: c08a194170bc35a88e652f6daefef5f69847dbe0
4
+ data.tar.gz: b12ebf8a2bac1da4b3d948a41300470b390ece1c
5
5
  SHA512:
6
- metadata.gz: 680c4f81cc797422e99a8ad83187cb02f197a2662d13e7ab2f0adbf8b2f624a4015854b9021b45763f7c6d4f582531aa75ad4469bbce01eab42f451fabe3bd13
7
- data.tar.gz: 0b2fe41e6805f56e67244c73de64fb2a8cd205d3b35df61d57fcc4a1ad03848805c5cef9ba4d5174d7577b9dd9977109b37613fc3035dee26d89fbbef99f64eb
6
+ metadata.gz: d7c620cd561928849d516dd8483fd59ef98f83460f0f1c5f870a834e46a9ce00d722b2583d5de7e6a2446382fb7614a0dfae1b250c38ef636d1fc17f8e47456d
7
+ data.tar.gz: 3cdf57fcb72980362f136d6eec0d9aa4d2c9afa0cfeb29c74b517e59139e403bce06957e24c8175983675859cf6dd889a9ff6d2e53ecef5004f14a14ae184092
@@ -75,6 +75,22 @@ module HammerCLIImport
75
75
  @summary = {}
76
76
  # Initialize AsyncTaskReactor
77
77
  atr_init
78
+
79
+ server = (HammerCLI::Settings.settings[:_params] &&
80
+ HammerCLI::Settings.settings[:_params][:host]) ||
81
+ HammerCLI::Settings.get(:foreman, :host)
82
+ username = (HammerCLI::Settings.settings[:_params] &&
83
+ HammerCLI::Settings.settings[:_params][:username]) ||
84
+ HammerCLI::Settings.get(:foreman, :username)
85
+ password = (HammerCLI::Settings.settings[:_params] &&
86
+ HammerCLI::Settings.settings[:_params][:password]) ||
87
+ HammerCLI::Settings.get(:foreman, :password)
88
+ @api = ApipieBindings::API.new({
89
+ :uri => server,
90
+ :username => username,
91
+ :password => password,
92
+ :api_version => 2
93
+ })
78
94
  end
79
95
 
80
96
  # What spacewalk-report do we expect to use for a given subcommand
@@ -427,13 +443,29 @@ module HammerCLIImport
427
443
  return get_cache(entity_type)[@pm[entity_type][original_id]]
428
444
  else
429
445
  info 'Creating new ' + type + ': ' + entity_hash.values_at(:name, :label, :login).compact[0]
430
- entity_hash = {@wrap_out[entity_type] => entity_hash} if @wrap_out[entity_type]
431
- debug "entity_hash: #{entity_hash.inspect}"
432
- entity = mapped_api_call(entity_type, :create, entity_hash)
446
+ if entity_type == :systems
447
+ entity = @api.resource(:host_subscriptions).call(:create, entity_hash)
448
+ params = {
449
+ 'id' => entity['id'],
450
+ 'host' => {
451
+ 'comment' => entity_hash[:description]
452
+ }
453
+ }
454
+ @api.resource(:hosts).call(:update, params)
455
+ unless entity_hash[:host_collection_ids].empty?
456
+ @api.resource(:host_collections).call(:add_hosts, {
457
+ 'id' => entity_hash[:host_collection_ids][0],
458
+ 'host_ids' => [entity['id']]
459
+ })
460
+ end
461
+ entity['id'] = entity['id'].to_s
462
+ else
463
+ entity_hash = {@wrap_out[entity_type] => entity_hash} if @wrap_out[entity_type]
464
+ debug "entity_hash: #{entity_hash.inspect}"
465
+ entity = mapped_api_call(entity_type, :create, entity_hash)
466
+ end
433
467
  debug "created entity: #{entity.inspect}"
434
468
  entity = entity[@wrap_in[entity_type]] if @wrap_in[entity_type]
435
- # workaround for Bug
436
- entity['id'] = entity['uuid'] if entity_type == :systems
437
469
  @pm[entity_type][original_id] = entity['id']
438
470
  get_cache(entity_type)[entity['id']] = entity
439
471
  debug "@pm[#{entity_type}]: #{@pm[entity_type].inspect}"
@@ -136,39 +136,52 @@ module HammerCLIImport
136
136
  # inside of working-directory
137
137
  def generate_module_template_for(name)
138
138
  module_name = name
139
+ pwd = Dir.pwd
139
140
  Dir.chdir(option_working_directory)
140
141
  gen_cmd = "puppet module generate #{name}"
141
142
  Open3.popen3(gen_cmd) do |stdin, stdout, _stderr|
142
- stdout.sync = true
143
- ConfigFileImportCommand.interview_questions.each do |q|
144
- rd = ''
145
- until rd.include? '?'
146
- rd = stdout.readline
147
- #debug "Read #{rd}"
143
+ begin
144
+ stdout.sync = true
145
+ ConfigFileImportCommand.interview_questions.each do |q|
146
+ rd = ''
147
+ until rd.include? '?'
148
+ rd = stdout.readline
149
+ debug "Read #{rd}"
150
+ end
151
+ answer = @interview_answers[q].gsub('#{module_name}', module_name)
152
+ stdin.puts(answer)
148
153
  end
149
- answer = @interview_answers[q].gsub('#{module_name}', module_name)
150
- stdin.puts(answer)
154
+ rescue EOFError => e
155
+ debug 'Done reading'
156
+ break
151
157
  end
152
- rd = ''
153
158
  begin
159
+ rd = ''
154
160
  rd = stdout.readline while rd
155
161
  rescue EOFError
156
162
  debug 'Done reading'
157
163
  end
158
164
  end
165
+ Dir.chdir(pwd)
159
166
 
160
167
  # Now that we have generated the module, add a 'description' to the
161
168
  # metadata.json file found at option_working_dir/<name>/metadata.json
162
169
  metadata_path = File.join(File.join(option_working_directory, name), 'metadata.json')
163
- answer = @interview_answers['description'].gsub('#{module_name}', module_name)
164
- sed_cmd = "sed -i '\/\"summary\":\/a \\ \\ \"description\": \"#{answer}\",' #{metadata_path}"
165
- debug "About to issue #{sed_cmd}"
166
- system sed_cmd
167
- report_summary :wrote, :puppet_modules
170
+ if File.exist? metadata_path
171
+ answer = @interview_answers['description'].gsub('#{module_name}', module_name)
172
+ sed_cmd = "sed -i '\/\"summary\":\/a \\ \\ \"description\": \"#{answer}\",' #{metadata_path}"
173
+ debug "About to issue #{sed_cmd}"
174
+ system sed_cmd
175
+ report_summary :wrote, :puppet_modules
176
+ else
177
+ info "Failed puppet module #{name}: metadata.json not created"
178
+ report_summary :failed, :puppet_modules
179
+ end
168
180
  end
169
181
 
170
182
  def build_puppet_module(module_name)
171
183
  module_dir = File.join(option_working_directory, module_name)
184
+ return nil unless File.exist? module_dir
172
185
  Dir.chdir(module_dir)
173
186
  gen_cmd = 'puppet module build'
174
187
  Open3.popen3(gen_cmd) do |_stdin, stdout, _stderr|
@@ -284,10 +297,11 @@ module HammerCLIImport
284
297
  def export_files
285
298
  progress 'Writing converted files'
286
299
  @modules.each do |mname, files|
300
+ module_dir = File.join(option_working_directory, mname)
301
+ next unless File.exist? module_dir
287
302
  info "Found module #{mname}"
288
303
  dsl = ''
289
304
 
290
- module_dir = File.join(option_working_directory, mname)
291
305
  fdir = File.join(module_dir, 'files')
292
306
  Dir.mkdir(fdir)
293
307
  tdir = File.join(module_dir, 'templates')
@@ -359,6 +373,7 @@ module HammerCLIImport
359
373
 
360
374
  # Build the puppet-module for upload
361
375
  module_dir = build_puppet_module(mname)
376
+ next if module_dir.nil?
362
377
 
363
378
  # Build/find the product
364
379
  product_hash = mk_product_hash(data, prod_name)
@@ -372,7 +387,7 @@ module HammerCLIImport
372
387
  [data['org_id'].to_i, data['channel_id'].to_i])
373
388
 
374
389
  # Find the built-module .tar.gz
375
- built_module_path = File.join(File.join(module_dir, 'pkg'),
390
+ built_module_path = File.join('pkg',
376
391
  "#{mname}-#{@interview_answers['version']}.tar.gz")
377
392
  info "Uploading #{built_module_path}"
378
393
 
@@ -25,6 +25,7 @@ module HammerCLIImport
25
25
  class ImportCommand
26
26
  class ContentHostImportCommand < BaseCommand
27
27
  include ImportTools::ContentView::Include
28
+ include ImportTools::LifecycleEnvironment::Include
28
29
 
29
30
  command_name 'content-host'
30
31
  reportname = 'system-profiles'
@@ -57,13 +58,14 @@ module HammerCLIImport
57
58
  hcollections = split_multival(data['system_group_id']).collect do |sg_id|
58
59
  get_translated_id(:host_collections, sg_id)
59
60
  end
61
+ org_id = get_translated_id(:organizations, data['organization_id'].to_i)
60
62
  {
61
63
  :name => data['profile_name'],
62
- :description => "#{data['description']}\nsat5_system_id: #{data['server_id']}",
64
+ :comment => "#{data['description']}\nsat5_system_id: #{data['server_id']}",
63
65
  :facts => {'release' => data['release'], 'architecture' => data['architecture']},
64
- :type => 'system',
65
66
  # :guest_ids => [],
66
- :organization_id => get_translated_id(:organizations, data['organization_id'].to_i),
67
+ :organization_id => org_id,
68
+ :lifecycle_environment_id => get_env(org_id)['id'],
67
69
  :content_view_id => cv_id,
68
70
  :host_collection_ids => hcollections
69
71
  }
@@ -90,7 +92,7 @@ module HammerCLIImport
90
92
  # store processed system profiles to a set according to the organization
91
93
  @map << {
92
94
  :org_id => data['organization_id'].to_i,
93
- :system_id => data['server_id'].to_i,
95
+ :host_id => data['server_id'].to_i,
94
96
  :uuid => c_host['uuid']}
95
97
  # associate virtual guests in post_import to make sure, all the guests
96
98
  # are already imported (and known to sat6)
@@ -157,10 +159,10 @@ module HammerCLIImport
157
159
  info "#{to_singular(:systems).capitalize} with id #{profile_id} wasn't imported. Skipping deletion."
158
160
  return
159
161
  end
160
- profile = get_cache(:systems)[@pm[:systems][profile_id]]
162
+ profile = get_cache(:systems)[@pm[:hosts][profile_id]]
161
163
  cv = get_cache(:content_views)[profile['content_view_id']]
162
164
  @composite_cvs << cv['id'] if cv['composite']
163
- delete_entity_by_import_id(:systems, get_translated_id(:systems, profile_id), 'uuid')
165
+ delete_entity_by_import_id(:systems, get_translated_id(:hosts, profile_id), 'uuid')
164
166
  end
165
167
 
166
168
  def post_delete(_file)
@@ -162,7 +162,10 @@ module ImportTools
162
162
  end
163
163
 
164
164
  def create_composite_content_view(entity_type, org_id, cv_label, cv_description, cvs)
165
- return nil if cvs.empty?
165
+ if cvs.empty?
166
+ return list_server_entities(:content_views,
167
+ {:organization_id => org_id, :name => "Default Organization View"})[0]['id']
168
+ end
166
169
  if cvs.size == 1
167
170
  return cvs.to_a[0]
168
171
  else
@@ -56,7 +56,7 @@ module PersistentMap
56
56
  :content_views
57
57
  @definitions[:redhat_repositories] = [{'org_id' => Fixnum}, {'channel_id' => Fixnum}], ['sat6' => Fixnum],
58
58
  :repositories
59
- @definitions[:systems] = ['sat5' => Fixnum], ['sat6' => String], :systems
59
+ @definitions[:systems] = ['sat5' => Fixnum], ['sat6' => String], :hosts
60
60
  @definitions[:template_snippets] = ['id' => Fixnum], ['sat6' => Fixnum], :config_templates
61
61
 
62
62
  @definitions.freeze
@@ -19,7 +19,7 @@
19
19
 
20
20
  module HammerCLIImport
21
21
  def self.version
22
- @version ||= Gem::Version.new('0.10.23')
22
+ @version ||= Gem::Version.new('0.11.0')
23
23
  end
24
24
  end
25
25
  # vim: autoindent tabstop=2 shiftwidth=2 expandtab softtabstop=2 filetype=ruby
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hammer_cli_import
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.23
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - "@mkollar"
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-02-09 00:00:00.000000000 Z
12
+ date: 2016-07-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hammer_cli
@@ -110,8 +110,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  version: '0'
111
111
  requirements: []
112
112
  rubyforge_project:
113
- rubygems_version: 2.2.3
113
+ rubygems_version: 2.4.6
114
114
  signing_key:
115
115
  specification_version: 4
116
116
  summary: Red Hat Satellite 5 data Importer commands for Hammer
117
117
  test_files: []
118
+ has_rdoc: