foreman_maintain 0.9.1 → 1.0.1

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/definitions/checks/check_for_newer_packages.rb +5 -3
  3. data/definitions/checks/disk/performance.rb +19 -8
  4. data/definitions/checks/foreman/check_puppet_capsules.rb +43 -0
  5. data/definitions/checks/foreman_proxy/check_tftp_storage.rb +3 -1
  6. data/definitions/checks/pulpcore/group_ownership_check.rb +18 -0
  7. data/definitions/checks/repositories/check_non_rh_repository.rb +9 -4
  8. data/definitions/checks/repositories/check_upstream_repository.rb +4 -4
  9. data/definitions/features/candlepin.rb +1 -2
  10. data/definitions/features/foreman_tasks.rb +11 -0
  11. data/definitions/features/pulpcore.rb +2 -1
  12. data/definitions/features/upstream_repositories.rb +23 -0
  13. data/definitions/procedures/content/prepare.rb +1 -1
  14. data/definitions/procedures/installer/upgrade_rake_task.rb +3 -1
  15. data/definitions/procedures/pulp/remove.rb +12 -0
  16. data/definitions/procedures/pulpcore/migrate.rb +1 -1
  17. data/definitions/procedures/puppet/remove_puppet.rb +50 -0
  18. data/definitions/procedures/puppet/remove_puppet_data.rb +21 -0
  19. data/definitions/procedures/repositories/backup_enabled_repos.rb +16 -0
  20. data/definitions/procedures/repositories/disable.rb +1 -1
  21. data/definitions/procedures/repositories/enable.rb +13 -0
  22. data/definitions/scenarios/puppet.rb +21 -0
  23. data/definitions/scenarios/restore.rb +13 -2
  24. data/definitions/scenarios/self_upgrade.rb +102 -0
  25. data/definitions/scenarios/upgrade_to_capsule_7_0.rb +89 -0
  26. data/definitions/scenarios/upgrade_to_capsule_7_0_z.rb +89 -0
  27. data/definitions/scenarios/upgrade_to_satellite_6_10.rb +1 -8
  28. data/definitions/scenarios/upgrade_to_satellite_7_0.rb +93 -0
  29. data/definitions/scenarios/upgrade_to_satellite_7_0_z.rb +90 -0
  30. data/lib/foreman_maintain/cli/plugin_command.rb +14 -0
  31. data/lib/foreman_maintain/cli/restore_command.rb +5 -1
  32. data/lib/foreman_maintain/cli/self_upgrade_command.rb +38 -0
  33. data/lib/foreman_maintain/cli.rb +4 -0
  34. data/lib/foreman_maintain/concerns/downstream.rb +57 -29
  35. data/lib/foreman_maintain/concerns/system_helpers.rb +11 -4
  36. data/lib/foreman_maintain/repository_manager/el.rb +85 -0
  37. data/lib/foreman_maintain/repository_manager.rb +13 -0
  38. data/lib/foreman_maintain/utils/backup.rb +1 -1
  39. data/lib/foreman_maintain/utils/command_runner.rb +2 -1
  40. data/lib/foreman_maintain/version.rb +1 -1
  41. data/lib/foreman_maintain.rb +1 -0
  42. metadata +19 -3
  43. data/definitions/features/system_repos.rb +0 -50
@@ -0,0 +1,85 @@
1
+ module ForemanMaintain::RepositoryManager
2
+ class El
3
+ include ForemanMaintain::Concerns::OsFacts
4
+ include ForemanMaintain::Concerns::SystemHelpers
5
+
6
+ def disable_repos(repo_ids)
7
+ if el7?
8
+ execute!("yum-config-manager #{config_manager_options(repo_ids, 'disable')}")
9
+ else
10
+ execute!("dnf config-manager #{config_manager_options(repo_ids, 'set-disabled')}")
11
+ end
12
+ end
13
+
14
+ def rhsm_disable_repos(repo_ids)
15
+ if rhsm_available?
16
+ execute!(%(subscription-manager repos #{rhsm_options(repo_ids, 'disable')}))
17
+ else
18
+ logger.info("subscription-manager is not available.\
19
+ Using #{pkg_manager} config manager instead.")
20
+ disable_repos(repo_ids)
21
+ end
22
+ end
23
+
24
+ def enable_repos(repo_ids)
25
+ if el7?
26
+ execute!("yum-config-manager #{config_manager_options(repo_ids, 'enable')}")
27
+ else
28
+ execute!("dnf config-manager #{config_manager_options(repo_ids, 'enable')}")
29
+ end
30
+ end
31
+
32
+ def rhsm_enable_repos(repo_ids)
33
+ if rhsm_available?
34
+ execute!(%(subscription-manager repos #{rhsm_options(repo_ids, 'enable')}))
35
+ else
36
+ logger.info("subscription-manager is not available.\
37
+ Using #{pkg_manager} config manager instead.")
38
+ enable_repos(repo_ids)
39
+ end
40
+ end
41
+
42
+ def rhsm_options(repo_ids, options)
43
+ repo_ids.map { |r| "--#{options}=#{r}" }.join(' ')
44
+ end
45
+
46
+ def config_manager_options(repo_ids, options)
47
+ repo_ids_string = if repo_ids.is_a?(Array)
48
+ repo_ids.join(',')
49
+ else
50
+ repo_ids
51
+ end
52
+ format_shell_args("--#{options}" => repo_ids_string)
53
+ end
54
+
55
+ def rhsm_available?
56
+ @rhsm_available ||= find_package('subscription-manager')
57
+ end
58
+
59
+ def rhsm_list_repos(list_option = '--list')
60
+ repos = execute(%(LANG=en_US.utf-8 subscription-manager repos #{list_option} 2>&1))
61
+ return {} if repos.empty?
62
+
63
+ hash_of_repoids_urls(repos, /Repo ID|Repo URL/)
64
+ end
65
+
66
+ def pkg_manager
67
+ package_manager.class.name.split('::').last.downcase
68
+ end
69
+
70
+ def enabled_repos
71
+ cmd = "#{pkg_manager} repolist enabled -d 6 -e 0 2> /dev/null"
72
+ repos = execute(cmd)
73
+ return {} if repos.empty?
74
+
75
+ hash_of_repoids_urls(repos, /Repo-id|Repo-baseurl/)
76
+ end
77
+
78
+ def hash_of_repoids_urls(repos, regex)
79
+ Hash[*repos.split("\n").grep(regex).map do |entry|
80
+ entry.split(':', 2).last.strip
81
+ end
82
+ ]
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,13 @@
1
+ require 'foreman_maintain/repository_manager/el'
2
+ include ForemanMaintain::Concerns::OsFacts
3
+ module ForemanMaintain
4
+ def self.repository_manager
5
+ @repository_manager ||= if el?
6
+ ForemanMaintain::RepositoryManager::El.new
7
+ elsif debian?
8
+ raise 'Not implemented!'
9
+ else
10
+ raise 'No supported repository manager was found'
11
+ end
12
+ end
13
+ end
@@ -291,7 +291,7 @@ module ForemanMaintain
291
291
  # I wanted to do `Socket.getifaddrs.map(&:name).uniq`,
292
292
  # but this has to work with Ruby 2.0, and Socket.getifaddrs is 2.1+
293
293
  errors = {}
294
- system_interfaces = Dir.children('/sys/class/net')
294
+ system_interfaces = Dir.entries('/sys/class/net') - ['.', '..']
295
295
 
296
296
  proxy_config = metadata.fetch('proxy_config', {})
297
297
 
@@ -66,7 +66,8 @@ module ForemanMaintain
66
66
  log_file = Tempfile.open('captured-output')
67
67
  exit_file = Tempfile.open('captured-exit-code')
68
68
  Kernel.system(
69
- "bash -c '#{full_command}; echo $? > #{exit_file.path}' | tee -i #{log_file.path}"
69
+ "stdbuf -oL -eL bash -c '#{full_command}; echo $? > #{exit_file.path}'"\
70
+ "| tee -i #{log_file.path}"
70
71
  )
71
72
  File.open(log_file.path) { |f| @output = f.read }
72
73
  File.open(exit_file.path) do |f|
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '0.9.1'.freeze
2
+ VERSION = '1.0.1'.freeze
3
3
  end
@@ -40,6 +40,7 @@ module ForemanMaintain
40
40
  require 'foreman_maintain/upgrade_runner'
41
41
  require 'foreman_maintain/reporter'
42
42
  require 'foreman_maintain/package_manager'
43
+ require 'foreman_maintain/repository_manager'
43
44
  require 'foreman_maintain/utils'
44
45
  require 'foreman_maintain/error'
45
46
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_maintain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Nečas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-20 00:00:00.000000000 Z
11
+ date: 2021-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -149,6 +149,7 @@ files:
149
149
  - definitions/checks/foreman/check_duplicate_permission.rb
150
150
  - definitions/checks/foreman/check_duplicate_roles.rb
151
151
  - definitions/checks/foreman/check_https_proxies.rb
152
+ - definitions/checks/foreman/check_puppet_capsules.rb
152
153
  - definitions/checks/foreman/db_up.rb
153
154
  - definitions/checks/foreman/facts_names.rb
154
155
  - definitions/checks/foreman/puppet_class_duplicates.rb
@@ -168,6 +169,7 @@ files:
168
169
  - definitions/checks/original_assets.rb
169
170
  - definitions/checks/package_manager/yum/validate_yum_config.rb
170
171
  - definitions/checks/pulpcore/db_up.rb
172
+ - definitions/checks/pulpcore/group_ownership_check.rb
171
173
  - definitions/checks/puppet/provide_upgrade_guide.rb
172
174
  - definitions/checks/puppet/verify_no_empty_cacert_requests.rb
173
175
  - definitions/checks/puppet/warn_about_puppet_removal.rb
@@ -212,9 +214,9 @@ files:
212
214
  - definitions/features/satellite.rb
213
215
  - definitions/features/service.rb
214
216
  - definitions/features/sync_plans.rb
215
- - definitions/features/system_repos.rb
216
217
  - definitions/features/tar.rb
217
218
  - definitions/features/upstream.rb
219
+ - definitions/features/upstream_repositories.rb
218
220
  - definitions/procedures/backup/accessibility_confirmation.rb
219
221
  - definitions/procedures/backup/clean.rb
220
222
  - definitions/procedures/backup/compress_data.rb
@@ -286,9 +288,13 @@ files:
286
288
  - definitions/procedures/pulp/remove.rb
287
289
  - definitions/procedures/pulpcore/migrate.rb
288
290
  - definitions/procedures/puppet/delete_empty_ca_cert_request_files.rb
291
+ - definitions/procedures/puppet/remove_puppet.rb
292
+ - definitions/procedures/puppet/remove_puppet_data.rb
289
293
  - definitions/procedures/refresh_features.rb
290
294
  - definitions/procedures/remote_execution/remove_existing_settingsd.rb
295
+ - definitions/procedures/repositories/backup_enabled_repos.rb
291
296
  - definitions/procedures/repositories/disable.rb
297
+ - definitions/procedures/repositories/enable.rb
292
298
  - definitions/procedures/repositories/setup.rb
293
299
  - definitions/procedures/restore/candlepin_dump.rb
294
300
  - definitions/procedures/restore/configs.rb
@@ -320,7 +326,9 @@ files:
320
326
  - definitions/scenarios/maintenance_mode.rb
321
327
  - definitions/scenarios/packages.rb
322
328
  - definitions/scenarios/prep_6_10_upgrade.rb
329
+ - definitions/scenarios/puppet.rb
323
330
  - definitions/scenarios/restore.rb
331
+ - definitions/scenarios/self_upgrade.rb
324
332
  - definitions/scenarios/services.rb
325
333
  - definitions/scenarios/upgrade_to_capsule_6_10.rb
326
334
  - definitions/scenarios/upgrade_to_capsule_6_10_z.rb
@@ -328,6 +336,8 @@ files:
328
336
  - definitions/scenarios/upgrade_to_capsule_6_8_z.rb
329
337
  - definitions/scenarios/upgrade_to_capsule_6_9.rb
330
338
  - definitions/scenarios/upgrade_to_capsule_6_9_z.rb
339
+ - definitions/scenarios/upgrade_to_capsule_7_0.rb
340
+ - definitions/scenarios/upgrade_to_capsule_7_0_z.rb
331
341
  - definitions/scenarios/upgrade_to_satellite_6_10.rb
332
342
  - definitions/scenarios/upgrade_to_satellite_6_10_z.rb
333
343
  - definitions/scenarios/upgrade_to_satellite_6_2.rb
@@ -346,6 +356,8 @@ files:
346
356
  - definitions/scenarios/upgrade_to_satellite_6_8_z.rb
347
357
  - definitions/scenarios/upgrade_to_satellite_6_9.rb
348
358
  - definitions/scenarios/upgrade_to_satellite_6_9_z.rb
359
+ - definitions/scenarios/upgrade_to_satellite_7_0.rb
360
+ - definitions/scenarios/upgrade_to_satellite_7_0_z.rb
349
361
  - extras/foreman-maintain.sh
350
362
  - extras/foreman_protector/foreman-protector.conf
351
363
  - extras/foreman_protector/foreman-protector.py
@@ -367,7 +379,9 @@ files:
367
379
  - lib/foreman_maintain/cli/health_command.rb
368
380
  - lib/foreman_maintain/cli/maintenance_mode_command.rb
369
381
  - lib/foreman_maintain/cli/packages_command.rb
382
+ - lib/foreman_maintain/cli/plugin_command.rb
370
383
  - lib/foreman_maintain/cli/restore_command.rb
384
+ - lib/foreman_maintain/cli/self_upgrade_command.rb
371
385
  - lib/foreman_maintain/cli/service_command.rb
372
386
  - lib/foreman_maintain/cli/transform_clamp_options.rb
373
387
  - lib/foreman_maintain/cli/upgrade_command.rb
@@ -402,6 +416,8 @@ files:
402
416
  - lib/foreman_maintain/procedure.rb
403
417
  - lib/foreman_maintain/reporter.rb
404
418
  - lib/foreman_maintain/reporter/cli_reporter.rb
419
+ - lib/foreman_maintain/repository_manager.rb
420
+ - lib/foreman_maintain/repository_manager/el.rb
405
421
  - lib/foreman_maintain/runner.rb
406
422
  - lib/foreman_maintain/runner/execution.rb
407
423
  - lib/foreman_maintain/runner/stored_execution.rb
@@ -1,50 +0,0 @@
1
- class Features::SystemRepos < ForemanMaintain::Feature
2
- metadata do
3
- label :system_repos
4
- description 'Feature for operations on yum repositories of system'
5
- end
6
-
7
- def upstream_repos
8
- repositories = {}
9
- enabled_repos_hash.each do |repo, url|
10
- upstream_repo_urls.each do |regex|
11
- repositories[repo] = url if url =~ regex
12
- end
13
- end
14
- repositories
15
- end
16
-
17
- def enabled_repos_hash
18
- repos = execute("yum repolist enabled -d 6 -e 0 2> /dev/null | grep -E 'Repo-id|Repo-baseurl'")
19
- return {} if repos.empty?
20
-
21
- Hash[*repos.delete!(' ').split("\n")]
22
- end
23
-
24
- def upstream_repos_ids
25
- trim_repoids(upstream_repos.keys)
26
- end
27
-
28
- def disable_repos(repo_ids)
29
- execute!("yum-config-manager --disable #{repo_ids.join(',')}")
30
- end
31
-
32
- private
33
-
34
- def trim_repoids(repos)
35
- repos.map { |r| r.gsub(%r{Repo-id:|\/+\w*}, '') }
36
- end
37
-
38
- def upstream_repo_urls
39
- repo_urls = { :Foreman => %r{yum.theforeman.org\/},
40
- :Katello => %r{fedorapeople.org\/groups\/katello\/releases\/yum\/[\/|\w|.]*} }
41
- [/#{repo_urls[:Foreman]}+releases/,
42
- /#{repo_urls[:Foreman]}+plugins/,
43
- /#{repo_urls[:Katello]}+katello/,
44
- /#{repo_urls[:Katello]}+client/,
45
- /#{repo_urls[:Katello]}+candlepin/,
46
- /#{repo_urls[:Katello]}+pulp/,
47
- %r{yum.puppetlabs.com\/el\/[\w|\/|\.]*\/x86_64},
48
- %r{repos.fedorapeople.org\/repos\/pulp\/[\/|\w|.]*\/x86_64}]
49
- end
50
- end