foreman_maintain 1.3.0 → 1.3.2

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 (217) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -4
  3. data/bin/foreman-maintain +1 -1
  4. data/bin/foreman-maintain-complete +5 -5
  5. data/definitions/checks/backup/directory_ready.rb +3 -1
  6. data/definitions/checks/candlepin/db_up.rb +1 -1
  7. data/definitions/checks/candlepin/validate_db.rb +2 -9
  8. data/definitions/checks/check_for_newer_packages.rb +5 -5
  9. data/definitions/checks/check_hotfix_installed.rb +3 -7
  10. data/definitions/checks/disk/available_space_postgresql12.rb +3 -2
  11. data/definitions/checks/disk/performance.rb +3 -3
  12. data/definitions/checks/foreman/check_corrupted_roles.rb +2 -4
  13. data/definitions/checks/foreman/check_duplicate_permission.rb +1 -1
  14. data/definitions/checks/foreman/check_duplicate_roles.rb +1 -1
  15. data/definitions/checks/foreman/check_tuning_requirements.rb +1 -1
  16. data/definitions/checks/foreman/db_up.rb +1 -1
  17. data/definitions/checks/foreman/facts_names.rb +4 -4
  18. data/definitions/checks/foreman_openscap/invalid_report_associations.rb +4 -4
  19. data/definitions/checks/foreman_proxy/check_tftp_storage.rb +4 -4
  20. data/definitions/checks/foreman_proxy/verify_dhcp_config_syntax.rb +1 -2
  21. data/definitions/checks/foreman_tasks/invalid/check_old.rb +2 -2
  22. data/definitions/checks/foreman_tasks/invalid/check_pending_state.rb +2 -2
  23. data/definitions/checks/foreman_tasks/invalid/check_planning_state.rb +2 -2
  24. data/definitions/checks/foreman_tasks/not_paused.rb +2 -2
  25. data/definitions/checks/foreman_tasks/not_running.rb +6 -6
  26. data/definitions/checks/original_assets.rb +3 -3
  27. data/definitions/checks/package_manager/yum/validate_yum_config.rb +1 -1
  28. data/definitions/checks/pulpcore/db_up.rb +1 -1
  29. data/definitions/checks/repositories/check_upstream_repository.rb +2 -2
  30. data/definitions/checks/repositories/validate.rb +2 -2
  31. data/definitions/checks/restore/validate_backup.rb +2 -2
  32. data/definitions/checks/restore/validate_hostname.rb +2 -2
  33. data/definitions/checks/restore/validate_interfaces.rb +2 -2
  34. data/definitions/checks/restore/validate_postgresql_dump_permissions.rb +31 -0
  35. data/definitions/checks/services_up.rb +2 -2
  36. data/definitions/features/apache.rb +1 -1
  37. data/definitions/features/candlepin.rb +1 -1
  38. data/definitions/features/candlepin_database.rb +2 -4
  39. data/definitions/features/cron.rb +3 -5
  40. data/definitions/features/dynflow_sidekiq.rb +2 -2
  41. data/definitions/features/foreman_cockpit.rb +1 -1
  42. data/definitions/features/foreman_database.rb +1 -1
  43. data/definitions/features/foreman_proxy.rb +1 -1
  44. data/definitions/features/foreman_server.rb +3 -7
  45. data/definitions/features/foreman_tasks.rb +9 -12
  46. data/definitions/features/gofer.rb +1 -1
  47. data/definitions/features/hammer.rb +4 -4
  48. data/definitions/features/installer.rb +4 -5
  49. data/definitions/features/instance.rb +12 -14
  50. data/definitions/features/katello.rb +8 -12
  51. data/definitions/features/pulpcore.rb +6 -30
  52. data/definitions/features/pulpcore_database.rb +3 -1
  53. data/definitions/features/puppet_server.rb +1 -1
  54. data/definitions/features/redis.rb +2 -18
  55. data/definitions/features/salt_server.rb +1 -1
  56. data/definitions/features/service.rb +4 -48
  57. data/definitions/features/sync_plans.rb +2 -2
  58. data/definitions/features/tar.rb +4 -3
  59. data/definitions/procedures/backup/compress_data.rb +0 -1
  60. data/definitions/procedures/backup/config_files.rb +6 -5
  61. data/definitions/procedures/backup/prepare_directory.rb +0 -2
  62. data/definitions/procedures/backup/pulp.rb +3 -3
  63. data/definitions/procedures/backup/snapshot/clean_mount.rb +1 -1
  64. data/definitions/procedures/backup/snapshot/logical_volume_confirmation.rb +1 -2
  65. data/definitions/procedures/backup/snapshot/mount_pulp.rb +2 -2
  66. data/definitions/procedures/foreman/fix_corrupted_roles.rb +3 -3
  67. data/definitions/procedures/foreman_tasks/delete.rb +3 -3
  68. data/definitions/procedures/hammer_setup.rb +1 -1
  69. data/definitions/procedures/knowledge_base_article.rb +3 -4
  70. data/definitions/procedures/packages/enable_modules.rb +1 -1
  71. data/definitions/procedures/packages/install.rb +1 -1
  72. data/definitions/procedures/packages/uninstall.rb +1 -1
  73. data/definitions/procedures/packages/update.rb +6 -2
  74. data/definitions/procedures/pulpcore/migrate.rb +2 -3
  75. data/definitions/procedures/pulpcore/trim_rpm_changelogs.rb +2 -3
  76. data/definitions/procedures/remote_execution/remove_existing_settingsd.rb +2 -2
  77. data/definitions/procedures/repositories/enable.rb +1 -1
  78. data/definitions/procedures/repositories/setup.rb +2 -2
  79. data/definitions/procedures/restore/candlepin_dump.rb +2 -2
  80. data/definitions/procedures/restore/configs.rb +3 -10
  81. data/definitions/procedures/restore/drop_databases.rb +2 -2
  82. data/definitions/procedures/restore/extract_files.rb +4 -17
  83. data/definitions/procedures/restore/foreman_dump.rb +2 -2
  84. data/definitions/procedures/restore/installer_reset.rb +1 -2
  85. data/definitions/procedures/restore/postgres_owner.rb +2 -2
  86. data/definitions/procedures/restore/pulpcore_dump.rb +2 -2
  87. data/definitions/procedures/selinux/set_file_security.rb +2 -2
  88. data/definitions/procedures/service/restart.rb +2 -3
  89. data/definitions/scenarios/backup.rb +47 -65
  90. data/definitions/scenarios/packages.rb +9 -9
  91. data/definitions/scenarios/restore.rb +24 -40
  92. data/definitions/scenarios/self_upgrade.rb +7 -11
  93. data/definitions/scenarios/services.rb +17 -17
  94. data/definitions/scenarios/upgrade_to_capsule_6_14.rb +3 -2
  95. data/definitions/scenarios/upgrade_to_capsule_6_14_z.rb +3 -2
  96. data/definitions/scenarios/upgrade_to_katello_nightly.rb +3 -0
  97. data/definitions/scenarios/upgrade_to_satellite_6_14.rb +3 -2
  98. data/definitions/scenarios/upgrade_to_satellite_6_14_z.rb +3 -2
  99. data/extras/foreman_protector/dnf/foreman-protector.py +4 -4
  100. data/extras/foreman_protector/foreman-protector.whitelist +0 -6
  101. data/lib/foreman_maintain/cli/advanced/prebuild_bash_completion.rb +1 -1
  102. data/lib/foreman_maintain/cli/advanced_command.rb +2 -2
  103. data/lib/foreman_maintain/cli/backup_command.rb +17 -17
  104. data/lib/foreman_maintain/cli/base.rb +13 -13
  105. data/lib/foreman_maintain/cli/maintenance_mode_command.rb +1 -1
  106. data/lib/foreman_maintain/cli/plugin_command.rb +1 -1
  107. data/lib/foreman_maintain/cli/restore_command.rb +4 -4
  108. data/lib/foreman_maintain/cli/self_upgrade_command.rb +2 -2
  109. data/lib/foreman_maintain/cli/service_command.rb +2 -2
  110. data/lib/foreman_maintain/cli/transform_clamp_options.rb +1 -1
  111. data/lib/foreman_maintain/cli/upgrade_command.rb +7 -7
  112. data/lib/foreman_maintain/cli.rb +1 -11
  113. data/lib/foreman_maintain/concerns/base_database.rb +8 -17
  114. data/lib/foreman_maintain/concerns/downstream.rb +6 -64
  115. data/lib/foreman_maintain/concerns/firewall/iptables_maintenance_mode.rb +1 -1
  116. data/lib/foreman_maintain/concerns/foreman_and_katello_version_map.rb +1 -1
  117. data/lib/foreman_maintain/concerns/os_facts.rb +0 -8
  118. data/lib/foreman_maintain/concerns/primary_checks.rb +6 -5
  119. data/lib/foreman_maintain/concerns/pulp_common.rb +5 -8
  120. data/lib/foreman_maintain/concerns/system_helpers.rb +3 -6
  121. data/lib/foreman_maintain/concerns/upstream.rb +3 -3
  122. data/lib/foreman_maintain/config.rb +7 -7
  123. data/lib/foreman_maintain/core_ext.rb +2 -2
  124. data/lib/foreman_maintain/executable.rb +7 -9
  125. data/lib/foreman_maintain/package_manager/apt.rb +2 -2
  126. data/lib/foreman_maintain/package_manager/base.rb +0 -2
  127. data/lib/foreman_maintain/package_manager/dnf.rb +2 -2
  128. data/lib/foreman_maintain/package_manager/yum.rb +3 -4
  129. data/lib/foreman_maintain/package_manager.rb +7 -9
  130. data/lib/foreman_maintain/param.rb +2 -2
  131. data/lib/foreman_maintain/reporter/cli_reporter.rb +6 -7
  132. data/lib/foreman_maintain/reporter.rb +15 -10
  133. data/lib/foreman_maintain/repository_manager/el.rb +2 -10
  134. data/lib/foreman_maintain/repository_manager.rb +2 -1
  135. data/lib/foreman_maintain/runner.rb +5 -5
  136. data/lib/foreman_maintain/scenario.rb +4 -2
  137. data/lib/foreman_maintain/upgrade_runner.rb +0 -2
  138. data/lib/foreman_maintain/utils/backup.rb +27 -111
  139. data/lib/foreman_maintain/utils/bash.rb +18 -19
  140. data/lib/foreman_maintain/utils/command_runner.rb +5 -9
  141. data/lib/foreman_maintain/utils/hash_tools.rb +5 -5
  142. data/lib/foreman_maintain/utils/response.rb +1 -0
  143. data/lib/foreman_maintain/utils/service/remote_db.rb +1 -0
  144. data/lib/foreman_maintain/utils/service/systemd.rb +7 -5
  145. data/lib/foreman_maintain/utils/service.rb +1 -1
  146. data/lib/foreman_maintain/utils.rb +0 -1
  147. data/lib/foreman_maintain/version.rb +1 -1
  148. data/lib/foreman_maintain/yaml_storage.rb +1 -0
  149. data/lib/foreman_maintain.rb +7 -6
  150. metadata +29 -78
  151. data/definitions/checks/foreman/check_https_proxies.rb +0 -34
  152. data/definitions/checks/mongo/db_up.rb +0 -33
  153. data/definitions/checks/mongo/tools_installed.rb +0 -31
  154. data/definitions/checks/pulpcore/group_ownership_check.rb +0 -18
  155. data/definitions/checks/puppet/provide_upgrade_guide.rb +0 -35
  156. data/definitions/checks/puppet/warn_about_puppet_removal.rb +0 -35
  157. data/definitions/checks/remote_execution/verify_settings_file_already_exists.rb +0 -42
  158. data/definitions/features/mongo.rb +0 -217
  159. data/definitions/features/pulp2.rb +0 -35
  160. data/definitions/procedures/backup/offline/mongo.rb +0 -56
  161. data/definitions/procedures/backup/online/mongo.rb +0 -21
  162. data/definitions/procedures/backup/snapshot/mount_mongo.rb +0 -43
  163. data/definitions/procedures/candlepin/delete_orphaned_records_from_env_content.rb +0 -40
  164. data/definitions/procedures/content/fix_pulpcore_artifact_permissions.rb +0 -31
  165. data/definitions/procedures/content/migration_reset.rb +0 -12
  166. data/definitions/procedures/content/migration_stats.rb +0 -12
  167. data/definitions/procedures/content/prepare.rb +0 -17
  168. data/definitions/procedures/content/prepare_abort.rb +0 -12
  169. data/definitions/procedures/content/switchover.rb +0 -41
  170. data/definitions/procedures/prep_6_10_upgrade.rb +0 -29
  171. data/definitions/procedures/pulp/cleanup_old_metadata_files.rb +0 -75
  172. data/definitions/procedures/pulp/migrate.rb +0 -23
  173. data/definitions/procedures/pulp/print_remove_instructions.rb +0 -16
  174. data/definitions/procedures/pulp/remove.rb +0 -222
  175. data/definitions/procedures/restore/ensure_mongo_engine_matches.rb +0 -35
  176. data/definitions/procedures/restore/mongo_dump.rb +0 -41
  177. data/definitions/procedures/restore/regenerate_queues.rb +0 -69
  178. data/definitions/scenarios/content.rb +0 -158
  179. data/definitions/scenarios/prep_6_10_upgrade.rb +0 -13
  180. data/definitions/scenarios/upgrade_to_capsule_6_10.rb +0 -89
  181. data/definitions/scenarios/upgrade_to_capsule_6_10_z.rb +0 -88
  182. data/definitions/scenarios/upgrade_to_capsule_6_11.rb +0 -91
  183. data/definitions/scenarios/upgrade_to_capsule_6_11_z.rb +0 -90
  184. data/definitions/scenarios/upgrade_to_capsule_6_12.rb +0 -92
  185. data/definitions/scenarios/upgrade_to_capsule_6_12_z.rb +0 -92
  186. data/definitions/scenarios/upgrade_to_capsule_6_13.rb +0 -92
  187. data/definitions/scenarios/upgrade_to_capsule_6_13_z.rb +0 -92
  188. data/definitions/scenarios/upgrade_to_capsule_6_8.rb +0 -88
  189. data/definitions/scenarios/upgrade_to_capsule_6_8_z.rb +0 -88
  190. data/definitions/scenarios/upgrade_to_capsule_6_9.rb +0 -88
  191. data/definitions/scenarios/upgrade_to_capsule_6_9_z.rb +0 -88
  192. data/definitions/scenarios/upgrade_to_satellite_6_10.rb +0 -113
  193. data/definitions/scenarios/upgrade_to_satellite_6_10_z.rb +0 -89
  194. data/definitions/scenarios/upgrade_to_satellite_6_11.rb +0 -96
  195. data/definitions/scenarios/upgrade_to_satellite_6_11_z.rb +0 -91
  196. data/definitions/scenarios/upgrade_to_satellite_6_12.rb +0 -95
  197. data/definitions/scenarios/upgrade_to_satellite_6_12_z.rb +0 -94
  198. data/definitions/scenarios/upgrade_to_satellite_6_13.rb +0 -95
  199. data/definitions/scenarios/upgrade_to_satellite_6_13_z.rb +0 -94
  200. data/definitions/scenarios/upgrade_to_satellite_6_2.rb +0 -88
  201. data/definitions/scenarios/upgrade_to_satellite_6_2_z.rb +0 -88
  202. data/definitions/scenarios/upgrade_to_satellite_6_3.rb +0 -89
  203. data/definitions/scenarios/upgrade_to_satellite_6_3_z.rb +0 -88
  204. data/definitions/scenarios/upgrade_to_satellite_6_4.rb +0 -89
  205. data/definitions/scenarios/upgrade_to_satellite_6_4_z.rb +0 -88
  206. data/definitions/scenarios/upgrade_to_satellite_6_5.rb +0 -88
  207. data/definitions/scenarios/upgrade_to_satellite_6_5_z.rb +0 -88
  208. data/definitions/scenarios/upgrade_to_satellite_6_6.rb +0 -90
  209. data/definitions/scenarios/upgrade_to_satellite_6_6_z.rb +0 -90
  210. data/definitions/scenarios/upgrade_to_satellite_6_7.rb +0 -88
  211. data/definitions/scenarios/upgrade_to_satellite_6_7_z.rb +0 -88
  212. data/definitions/scenarios/upgrade_to_satellite_6_8.rb +0 -91
  213. data/definitions/scenarios/upgrade_to_satellite_6_8_z.rb +0 -89
  214. data/definitions/scenarios/upgrade_to_satellite_6_9.rb +0 -91
  215. data/definitions/scenarios/upgrade_to_satellite_6_9_z.rb +0 -89
  216. data/lib/foreman_maintain/cli/content_command.rb +0 -69
  217. data/lib/foreman_maintain/utils/mongo_core.rb +0 -86
@@ -2,17 +2,17 @@ require 'fileutils'
2
2
  module ForemanMaintain
3
3
  class Config
4
4
  attr_accessor :pre_setup_log_messages,
5
- :config_file, :definitions_dirs, :log_level, :log_dir, :log_file_size,
6
- :log_filename, :storage_file, :backup_dir, :foreman_proxy_cert_path,
7
- :db_backup_dir, :completion_cache_file, :disable_commands, :manage_crond,
8
- :foreman_url, :foreman_port
5
+ :config_file, :definitions_dirs, :log_level, :log_dir, :log_file_size,
6
+ :log_filename, :storage_file, :backup_dir, :foreman_proxy_cert_path,
7
+ :db_backup_dir, :completion_cache_file, :disable_commands, :manage_crond,
8
+ :foreman_url, :foreman_port
9
9
 
10
10
  def initialize(options)
11
11
  @pre_setup_log_messages = []
12
12
  @config_file = options.fetch(:config_file, config_file_path)
13
13
  @options = load_config
14
14
  @definitions_dirs = @options.fetch(:definitions_dirs,
15
- [File.join(source_path, 'definitions')])
15
+ [File.join(source_path, 'definitions')])
16
16
  load_log_configs
17
17
  load_backup_dir_paths
18
18
  load_cron_option
@@ -28,7 +28,7 @@ module ForemanMaintain
28
28
  private
29
29
 
30
30
  def load_log_configs
31
- @log_level = @options.fetch(:log_level, ::Logger::DEBUG)
31
+ @log_level = @options.fetch(:log_level, ::Logger::INFO)
32
32
  @log_dir = find_dir_path(@options.fetch(:log_dir, 'log'))
33
33
  @log_file_size = @options.fetch(:log_file_size, 10_000)
34
34
  # Note - If timestamp added to filename then number of log files i.e second
@@ -68,7 +68,7 @@ module ForemanMaintain
68
68
  end
69
69
 
70
70
  def source_path
71
- File.expand_path('../../..', __FILE__)
71
+ File.expand_path('../..', __dir__)
72
72
  end
73
73
 
74
74
  def find_dir_path(dir_path_str)
@@ -10,7 +10,7 @@ module ForemanMaintain
10
10
  gsub(/^[ \t]{#{indent}}/, '')
11
11
  end
12
12
  end
13
- String.send(:include, StripHeredoc)
13
+ String.include StripHeredoc
14
14
 
15
15
  module ValidateOptions
16
16
  def validate_options!(*valid_keys)
@@ -23,6 +23,6 @@ module ForemanMaintain
23
23
  self
24
24
  end
25
25
  end
26
- Hash.send(:include, ValidateOptions)
26
+ Hash.include ValidateOptions
27
27
  end
28
28
  end
@@ -3,10 +3,11 @@ module ForemanMaintain
3
3
  extend Forwardable
4
4
  extend Concerns::Finders
5
5
  attr_reader :options
6
+
6
7
  def_delegators :execution,
7
- :success?, :skipped?, :fail?, :aborted?, :warning?, :output,
8
- :assumeyes?, :whitelisted?, :ask_decision,
9
- :execution, :puts, :print, :with_spinner, :ask, :storage
8
+ :success?, :skipped?, :fail?, :aborted?, :warning?, :output,
9
+ :assumeyes?, :whitelisted?, :ask_decision,
10
+ :execution, :puts, :print, :with_spinner, :ask, :storage
10
11
 
11
12
  def initialize(options = {})
12
13
  @options = options.inject({}) { |h, (k, v)| h.update(k.to_s => v) }
@@ -26,7 +27,8 @@ module ForemanMaintain
26
27
  end
27
28
 
28
29
  # public method to be overriden to perform after-initialization steps
29
- def after_initialize; end
30
+ def after_initialize
31
+ end
30
32
 
31
33
  # processes the params from provided options
32
34
  def setup_params
@@ -113,11 +115,7 @@ module ForemanMaintain
113
115
  end
114
116
 
115
117
  def execution
116
- if @_execution
117
- @_execution
118
- else
119
- raise 'Trying to get execution information before the run started happened'
120
- end
118
+ @_execution || raise('Trying to get execution information before the run started happened')
121
119
  end
122
120
 
123
121
  # public method to be overriden: it can perform additional checks
@@ -68,10 +68,10 @@ module ForemanMaintain::PackageManager
68
68
  packages_s = packages.empty? ? '' : ' ' + packages.join(' ')
69
69
  if with_status
70
70
  sys.execute_with_status("apt-get#{apt_options_s} #{action}#{packages_s}",
71
- :interactive => !assumeyes)
71
+ :interactive => !assumeyes)
72
72
  else
73
73
  sys.execute!("apt-get#{apt_options_s} #{action}#{packages_s}",
74
- :interactive => !assumeyes, :valid_exit_statuses => valid_exit_statuses)
74
+ :interactive => !assumeyes, :valid_exit_statuses => valid_exit_statuses)
75
75
  end
76
76
  end
77
77
  end
@@ -1,5 +1,4 @@
1
1
  module ForemanMaintain::PackageManager
2
- # rubocop:disable Lint/UnusedMethodArgument
3
2
  class Base
4
3
  # confirms that Package Manager supports the locking mechanism
5
4
  def version_locking_supported?
@@ -62,5 +61,4 @@ module ForemanMaintain::PackageManager
62
61
  ForemanMaintain::Utils::SystemHelpers
63
62
  end
64
63
  end
65
- # rubocop:enable Lint/UnusedMethodArgument
66
64
  end
@@ -35,10 +35,10 @@ module ForemanMaintain::PackageManager
35
35
  yum_options << '-y' if assumeyes
36
36
  if with_status
37
37
  sys.execute_with_status("dnf #{yum_options.join(' ')} #{action} #{packages.join(' ')}",
38
- :interactive => !assumeyes)
38
+ :interactive => !assumeyes)
39
39
  else
40
40
  sys.execute!("dnf #{yum_options.join(' ')} #{action} #{packages.join(' ')}",
41
- :interactive => !assumeyes)
41
+ :interactive => !assumeyes)
42
42
 
43
43
  end
44
44
  end
@@ -68,7 +68,7 @@ module ForemanMaintain::PackageManager
68
68
  end
69
69
 
70
70
  def check_update(packages: nil, with_status: false)
71
- yum_action('check-update', packages, :assumeyes => true, :valid_exit_statuses => [100],
71
+ yum_action('check-update', packages, :assumeyes => true, :valid_exit_statuses => [0, 100],
72
72
  :with_status => with_status)
73
73
  end
74
74
 
@@ -120,7 +120,6 @@ module ForemanMaintain::PackageManager
120
120
  File.open(protector_config_file, 'w') { |file| file.puts config }
121
121
  end
122
122
 
123
- # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
124
123
  def yum_action(action, packages, options)
125
124
  with_status = options.fetch(:with_status, false)
126
125
  assumeyes = options.fetch(:assumeyes, false)
@@ -133,10 +132,10 @@ module ForemanMaintain::PackageManager
133
132
  packages_s = packages.empty? ? '' : ' ' + packages.join(' ')
134
133
  if with_status
135
134
  sys.execute_with_status("yum#{yum_options_s} #{action}#{packages_s}",
136
- :interactive => !assumeyes)
135
+ :interactive => !assumeyes)
137
136
  else
138
137
  sys.execute!("yum#{yum_options_s} #{action}#{packages_s}",
139
- :interactive => !assumeyes, :valid_exit_statuses => valid_exit_statuses)
138
+ :interactive => !assumeyes, :valid_exit_statuses => valid_exit_statuses)
140
139
  end
141
140
  end
142
141
  end
@@ -5,14 +5,12 @@ require 'foreman_maintain/package_manager/apt'
5
5
 
6
6
  module ForemanMaintain
7
7
  def self.package_manager
8
- @package_manager ||= if el7?
9
- ForemanMaintain::PackageManager::Yum.new
10
- elsif el?
11
- ForemanMaintain::PackageManager::Dnf.new
12
- elsif debian_or_ubuntu?
13
- ForemanMaintain::PackageManager::Apt.new
14
- else
15
- raise 'No supported package manager was found'
16
- end
8
+ if el?
9
+ ForemanMaintain::PackageManager::Dnf.new
10
+ elsif debian_or_ubuntu?
11
+ ForemanMaintain::PackageManager::Apt.new
12
+ else
13
+ raise 'No supported package manager was found'
14
+ end
17
15
  end
18
16
  end
@@ -4,7 +4,7 @@ module ForemanMaintain
4
4
 
5
5
  def initialize(name, description, options, &block)
6
6
  options.validate_options!(:description, :required, :flag, :array,
7
- :allowed_values, :default)
7
+ :allowed_values, :default)
8
8
  @name = name
9
9
  @description = description || options[:description] || ''
10
10
  @options = options
@@ -63,7 +63,7 @@ module ForemanMaintain
63
63
  return if within_allowed
64
64
  error_msg = "'#{value}' not allowed for #{name} param."
65
65
  raise ForemanMaintain::Error::UsageError,
66
- "#{error_msg} Possible values are #{@allowed_values.join(', ')}"
66
+ "#{error_msg} Possible values are #{@allowed_values.join(', ')}"
67
67
  end
68
68
  end
69
69
  end
@@ -1,4 +1,3 @@
1
- require 'thread'
2
1
  require 'highline'
3
2
 
4
3
  module ForemanMaintain
@@ -73,7 +72,7 @@ module ForemanMaintain
73
72
  attr_accessor :select_option_counter
74
73
  attr_reader :last_line, :max_length
75
74
 
76
- def initialize(stdout = STDOUT, stdin = STDIN, options = {})
75
+ def initialize(stdout = $stdout, stdin = $stdin, options = {})
77
76
  @stdout = stdout
78
77
  @stdin = stdin
79
78
  options.validate_options!(:assumeyes)
@@ -127,9 +126,9 @@ module ForemanMaintain
127
126
  @new_line_next_time = false
128
127
  @last_line = ''
129
128
  # add space at the end as otherwise highline would add new line there :/
130
- message = "#{message} " unless message =~ /\s\Z/
129
+ message = "#{message} " unless /\s\Z/.match?(message)
131
130
  answer = @hl.ask(message) { |q| q.echo = false if options[:password] }
132
- answer.to_s.chomp if answer
131
+ answer&.to_s&.chomp
133
132
  end
134
133
 
135
134
  def new_line_if_needed
@@ -179,7 +178,7 @@ module ForemanMaintain
179
178
 
180
179
  def single_step_decision(step, run_strategy)
181
180
  answer = ask_decision("Continue with step [#{step.runtime_message}]?",
182
- run_strategy: run_strategy)
181
+ run_strategy: run_strategy)
183
182
  if answer == :yes
184
183
  step
185
184
  else
@@ -339,13 +338,13 @@ module ForemanMaintain
339
338
 
340
339
  In case the failures are false positives, use
341
340
  --whitelist="%s"
342
- MESSAGE
341
+ MESSAGE
343
342
  else
344
343
  format(<<-MESSAGE.strip_heredoc, whitelist_labels)
345
344
  Resolve the failed steps and rerun the command.
346
345
  In case the failures are false positives, use
347
346
  --whitelist="%s"
348
- MESSAGE
347
+ MESSAGE
349
348
  end
350
349
  end
351
350
  end
@@ -10,17 +10,21 @@ module ForemanMaintain
10
10
  DECISION_MAPPER = {
11
11
  %w[y yes] => :yes,
12
12
  %w[n next no] => :no,
13
- %w[q quit] => :quit
13
+ %w[q quit] => :quit,
14
14
  }.freeze
15
15
 
16
16
  # Each public method is a hook called by executor at the specific point
17
- def before_scenario_starts(_scenario, _last_scenario = nil); end
17
+ def before_scenario_starts(_scenario, _last_scenario = nil)
18
+ end
18
19
 
19
- def before_execution_starts(_execution); end
20
+ def before_execution_starts(_execution)
21
+ end
20
22
 
21
- def after_execution_finishes(_execution); end
23
+ def after_execution_finishes(_execution)
24
+ end
22
25
 
23
- def after_scenario_finishes(_scenario); end
26
+ def after_scenario_finishes(_scenario)
27
+ end
24
28
 
25
29
  def on_next_steps(steps, run_strategy = :fail_fast)
26
30
  return if steps.empty?
@@ -36,11 +40,14 @@ module ForemanMaintain
36
40
  yield DummySpinner.new
37
41
  end
38
42
 
39
- def print(_message); end
43
+ def print(_message)
44
+ end
40
45
 
41
- def puts(_message); end
46
+ def puts(_message)
47
+ end
42
48
 
43
- def ask(_message); end
49
+ def ask(_message)
50
+ end
44
51
 
45
52
  def assumeyes?
46
53
  @assumeyes
@@ -100,7 +107,6 @@ module ForemanMaintain
100
107
  decision
101
108
  end
102
109
 
103
- # rubocop:disable Metrics/MethodLength
104
110
  def ask_to_select(message, steps, run_strategy)
105
111
  if assumeyes?
106
112
  puts('(assuming first option)')
@@ -122,7 +128,6 @@ module ForemanMaintain
122
128
  end
123
129
  end
124
130
  end
125
- # rubocop:enable Metrics/MethodLength
126
131
 
127
132
  # loop over the block until it returns some non-false value
128
133
  def until_valid_decision
@@ -4,11 +4,7 @@ module ForemanMaintain::RepositoryManager
4
4
  include ForemanMaintain::Concerns::SystemHelpers
5
5
 
6
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
7
+ execute!("dnf config-manager #{config_manager_options(repo_ids, 'set-disabled')}")
12
8
  end
13
9
 
14
10
  def rhsm_disable_repos(repo_ids)
@@ -22,11 +18,7 @@ module ForemanMaintain::RepositoryManager
22
18
  end
23
19
 
24
20
  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
21
+ execute!("dnf config-manager #{config_manager_options(repo_ids, 'enable')}")
30
22
  end
31
23
 
32
24
  def rhsm_enable_repos(repo_ids)
@@ -1,6 +1,7 @@
1
1
  require 'foreman_maintain/repository_manager/el'
2
- include ForemanMaintain::Concerns::OsFacts
3
2
  module ForemanMaintain
3
+ extend ForemanMaintain::Concerns::OsFacts
4
+
4
5
  def self.repository_manager
5
6
  @repository_manager ||= if el?
6
7
  ForemanMaintain::RepositoryManager::El.new
@@ -78,7 +78,7 @@ module ForemanMaintain
78
78
  elsif @last_scenario.steps_with_warning(:whitelisted => false).any?
79
79
  @last_scenario_continuation_confirmed = true
80
80
  reporter.ask_decision("Continue with [#{scenario.description}]",
81
- run_strategy: scenario.run_strategy)
81
+ run_strategy: scenario.run_strategy)
82
82
  end
83
83
 
84
84
  ask_to_quit if [:quit, :no].include?(decision)
@@ -93,7 +93,7 @@ module ForemanMaintain
93
93
  def add_steps(*steps)
94
94
  # we we add the steps at the beginning, but still keeping the
95
95
  # order of steps passed in the arguments
96
- steps.reverse.each do |step|
96
+ steps.reverse_each do |step|
97
97
  @steps_to_run.unshift(step)
98
98
  end
99
99
  end
@@ -125,9 +125,9 @@ module ForemanMaintain
125
125
  def run_step(step)
126
126
  @reporter.puts('Rerunning the check after fix procedure') if rerun_check?(step)
127
127
  execution = Execution.new(step, @reporter,
128
- :whitelisted => whitelisted_step?(step),
129
- :storage => storage,
130
- :force => @force)
128
+ :whitelisted => whitelisted_step?(step),
129
+ :storage => storage,
130
+ :force => @force)
131
131
  execution.run
132
132
  execution
133
133
  ensure
@@ -88,10 +88,12 @@ module ForemanMaintain
88
88
  end
89
89
 
90
90
  # Override to compose steps for the scenario
91
- def compose; end
91
+ def compose
92
+ end
92
93
 
93
94
  # Override to map context for the scenario
94
- def set_context_mapping; end
95
+ def set_context_mapping
96
+ end
95
97
 
96
98
  def preparation_steps
97
99
  # we first take the preparation steps defined for the scenario + collect
@@ -146,7 +146,6 @@ module ForemanMaintain
146
146
 
147
147
  private
148
148
 
149
- # rubocop:disable Metrics/MethodLength
150
149
  def rollback_pre_migrations
151
150
  raise "Unexpected phase #{phase}, expecting pre_migrations" unless phase == :pre_migrations
152
151
 
@@ -169,7 +168,6 @@ module ForemanMaintain
169
168
  The upgrade failed and system was restored to pre-upgrade state.
170
169
  MESSAGE
171
170
  end
172
- # rubocop:enable Metrics/MethodLength
173
171
 
174
172
  def with_non_empty_scenario(phase)
175
173
  next_scenario = scenario(phase)
@@ -8,42 +8,30 @@ module ForemanMaintain
8
8
  include Concerns::SystemHelpers
9
9
 
10
10
  attr_accessor :standard_files, :katello_online_files, :katello_offline_files,
11
- :foreman_online_files, :foreman_offline_files, :fpc_offline_files,
12
- :fpc_online_files
11
+ :foreman_online_files, :foreman_offline_files, :fpc_offline_files,
12
+ :fpc_online_files
13
13
 
14
- # rubocop:disable Metrics/MethodLength
15
14
  def initialize(backup_dir)
16
15
  # fpc stands for foreman proxy w/ content
17
16
  @backup_dir = backup_dir
18
17
  @standard_files = ['config_files.tar.gz']
19
18
  @foreman_online_files = ['foreman.dump']
20
19
  @foreman_offline_files = ['pgsql_data.tar.gz']
21
- @katello_online_files = ['candlepin.dump', 'foreman.dump']
20
+ @katello_online_files = @foreman_online_files + ['candlepin.dump', 'pulpcore.dump']
22
21
  @katello_offline_files = ['pgsql_data.tar.gz']
23
- if feature(:pulp2)
24
- @katello_online_files << 'mongo_dump'
25
- @katello_offline_files << 'mongo_data.tar.gz'
26
- @fpc_online_files = ['mongo_dump']
27
- @fpc_offline_files = ['mongo_data.tar.gz']
28
- elsif feature(:pulpcore_database)
29
- @katello_online_files << 'foreman.dump'
30
- @fpc_online_files = ['pulpcore.dump']
31
- @fpc_offline_files = ['pgsql_data.tar.gz']
32
- end
22
+ @fpc_online_files = ['pulpcore.dump']
23
+ @fpc_offline_files = ['pgsql_data.tar.gz']
33
24
  end
34
- # rubocop:enable Metrics/MethodLength
35
25
 
36
26
  def file_map
37
27
  @file_map ||= {
38
- :mongo_data => map_file(@backup_dir, 'mongo_data.tar.gz'),
39
28
  :pgsql_data => map_file(@backup_dir, 'pgsql_data.tar.gz'),
40
29
  :pulp_data => map_file(@backup_dir, 'pulp_data.tar'),
41
30
  :foreman_dump => map_file(@backup_dir, 'foreman.dump'),
42
31
  :candlepin_dump => map_file(@backup_dir, 'candlepin.dump'),
43
- :mongo_dump => map_file(@backup_dir, 'mongo_dump'),
44
32
  :config_files => map_file(@backup_dir, 'config_files.tar.gz'),
45
33
  :metadata => map_file(@backup_dir, 'metadata.yml'),
46
- :pulpcore_dump => map_file(@backup_dir, 'pulpcore.dump')
34
+ :pulpcore_dump => map_file(@backup_dir, 'pulpcore.dump'),
47
35
  }
48
36
  end
49
37
 
@@ -52,7 +40,7 @@ module ForemanMaintain
52
40
  present = File.exist?(file_path)
53
41
  {
54
42
  :present => present,
55
- :path => file_path
43
+ :path => file_path,
56
44
  }
57
45
  end
58
46
 
@@ -77,7 +65,6 @@ module ForemanMaintain
77
65
 
78
66
  def valid_fpc_backup?
79
67
  fpc_online_backup? || fpc_standard_backup? || fpc_logical_backup? || \
80
- # fpc can have setup where mongo or pulpcore db is external but not both
81
68
  fpc_hybrid_db_backup?
82
69
  end
83
70
 
@@ -109,118 +96,52 @@ module ForemanMaintain
109
96
 
110
97
  def katello_standard_backup?
111
98
  present = [:pgsql_data]
112
- absent = [:candlepin_dump, :foreman_dump, :pulpcore_dump, :mongo_dump]
113
- if feature(:pulpcore_database) && !feature(:pulp2)
114
- absent.concat [:mongo_data]
115
- elsif feature(:pulp2)
116
- present.concat [:mongo_data]
117
- else
118
- return false
119
- end
99
+ absent = [:candlepin_dump, :foreman_dump, :pulpcore_dump]
120
100
  check_file_existence(:present => present,
121
- :absent => absent)
101
+ :absent => absent)
122
102
  end
123
103
 
124
104
  def katello_online_backup?
125
- present = [:candlepin_dump, :foreman_dump]
126
- absent = [:mongo_data, :pgsql_data]
127
- if feature(:pulpcore_database) && !feature(:pulp2)
128
- present.concat [:pulpcore_dump]
129
- absent.concat [:mongo_dump]
130
- elsif feature(:pulp2) && feature(:pulpcore_database)
131
- present.concat [:mongo_dump, :pulpcore_dump]
132
- elsif feature(:pulp2)
133
- present.concat [:mongo_dump]
134
- absent.concat [:pulpcore_dump]
135
- else
136
- return false
137
- end
105
+ present = [:candlepin_dump, :foreman_dump, :pulpcore_dump]
106
+ absent = [:pgsql_data]
138
107
  check_file_existence(:present => present,
139
- :absent => absent)
108
+ :absent => absent)
140
109
  end
141
110
 
142
111
  def katello_logical_backup?
143
- present = [:pgsql_data, :candlepin_dump, :foreman_dump]
112
+ present = [:pgsql_data, :candlepin_dump, :foreman_dump, :pulpcore_dump]
144
113
  absent = []
145
- if feature(:pulpcore_database) && !feature(:pulp2)
146
- present.concat [:pulpcore_dump]
147
- absent.concat [:mongo_dump, :mongo_data]
148
- elsif feature(:pulp2) && feature(:pulpcore_database)
149
- present.concat [:mongo_dump, :mongo_data, :pulpcore_dump]
150
- elsif feature(:pulp2)
151
- present.concat [:mongo_dump, :mongo_data]
152
- absent.concat [:pulpcore_dump]
153
- else
154
- return false
155
- end
156
114
  check_file_existence(:present => present,
157
- :absent => absent)
115
+ :absent => absent)
158
116
  end
159
117
 
160
118
  def katello_hybrid_db_backup?
161
- all_dbs = { :pgsql_data => %w[candlepin foreman], :mongo_data => [] }
162
- all_dbs[:pgsql_data] << 'pulpcore' if feature(:pulpcore_database)
163
- all_dbs[:mongo_data] << 'mongo' if feature(:mongo)
119
+ all_dbs = { :pgsql_data => %w[candlepin foreman pulpcore] }
164
120
  present, absent = dumps_for_hybrid_db_setup(all_dbs)
165
121
  check_file_existence(:present => present, :absent => absent)
166
122
  end
167
123
 
168
124
  def fpc_standard_backup?
169
- present = []
170
- absent = [:candlepin_dump, :foreman_dump, :pulpcore_dump, :mongo_dump]
171
- if feature(:pulpcore_database) && !feature(:pulp2)
172
- present.concat [:pgsql_data]
173
- absent.concat [:mongo_data]
174
- elsif feature(:pulp2) && feature(:pulpcore_database)
175
- present.concat [:mongo_data, :pgsql_data]
176
- elsif feature(:pulp2)
177
- present.concat [:mongo_data]
178
- absent.concat [:pgsql_data]
179
- else
180
- return false
181
- end
125
+ present = [:pgsql_data]
126
+ absent = [:candlepin_dump, :foreman_dump, :pulpcore_dump]
182
127
  check_file_existence(:present => present,
183
- :absent => absent)
128
+ :absent => absent)
184
129
  end
185
130
 
186
131
  def fpc_online_backup?
187
- present = []
188
- absent = [:mongo_data, :pgsql_data, :candlepin_dump, :foreman_dump]
189
- if feature(:pulpcore_database) && !feature(:pulp2)
190
- present.concat [:pulpcore_dump]
191
- absent.concat [:mongo_dump]
192
- elsif feature(:pulp2) && feature(:pulpcore_database)
193
- present.concat [:mongo_dump, :pulpcore_dump]
194
- elsif feature(:pulp2)
195
- present.concat [:mongo_dump]
196
- absent.concat [:pulpcore_dump]
197
- else
198
- return false
199
- end
132
+ present = [:pulpcore_dump]
133
+ absent = [:pgsql_data, :candlepin_dump, :foreman_dump]
200
134
  check_file_existence(:present => present, :absent => absent)
201
135
  end
202
136
 
203
137
  def fpc_logical_backup?
204
- present = []
138
+ present = [:pulpcore_dump, :pgsql_data]
205
139
  absent = [:candlepin_dump, :foreman_dump]
206
- if feature(:pulpcore_database) && !feature(:pulp2)
207
- present.concat [:pulpcore_dump, :pgsql_data]
208
- absent.concat [:mongo_dump, :mongo_data]
209
- elsif feature(:pulp2) && feature(:pulpcore_database)
210
- present.concat [:mongo_dump, :mongo_data, :pulpcore_dump, :pgsql_data]
211
- elsif feature(:pulp2)
212
- present.concat [:mongo_dump, :mongo_data]
213
- absent.concat [:pulpcore_dump, :pgsql_data]
214
- else
215
- return false
216
- end
217
140
  check_file_existence(:present => present, :absent => absent)
218
141
  end
219
142
 
220
143
  def fpc_hybrid_db_backup?
221
- all_dbs = { :pgsql_data => [], :mongo_data => [] }
222
- all_dbs[:pgsql_data] << 'pulpcore' if feature(:pulpcore_database)
223
- all_dbs[:mongo_data] << 'mongo' if feature(:mongo)
144
+ all_dbs = { :pgsql_data => ['pulpcore'] }
224
145
  present, absent = dumps_for_hybrid_db_setup(all_dbs)
225
146
  absent.concat [:candlepin_dump, :foreman_dump]
226
147
  check_file_existence(:present => present, :absent => absent)
@@ -228,28 +149,25 @@ module ForemanMaintain
228
149
 
229
150
  def foreman_standard_backup?
230
151
  check_file_existence(:present => [:pgsql_data],
231
- :absent => [:candlepin_dump, :foreman_dump, :pulpcore_dump,
232
- :mongo_data, :mongo_dump])
152
+ :absent => [:candlepin_dump, :foreman_dump, :pulpcore_dump])
233
153
  end
234
154
 
235
155
  def foreman_online_backup?
236
156
  check_file_existence(:present => [:foreman_dump],
237
- :absent => [:candlepin_dump, :pgsql_data,
238
- :mongo_data, :mongo_dump, :pulpcore_dump])
157
+ :absent => [:candlepin_dump, :pgsql_data, :pulpcore_dump])
239
158
  end
240
159
 
241
160
  def foreman_logical_backup?
242
161
  check_file_existence(:present => [:pgsql_data, :foreman_dump],
243
- :absent => [:candlepin_dump, :mongo_data, :mongo_dump, :pulpcore_dump])
162
+ :absent => [:candlepin_dump, :pulpcore_dump])
244
163
  end
245
164
 
246
- # rubocop:disable Metrics/MethodLength
247
165
  def dumps_for_hybrid_db_setup(dbs_hash)
248
166
  present = []
249
167
  absent = []
250
168
  dbs_hash.each do |data_file, dbs|
251
169
  dbs.each do |db|
252
- feature_label = db == 'mongo' ? db : "#{db}_database"
170
+ feature_label = "#{db}_database"
253
171
  dump_file = "#{db}_dump"
254
172
  if feature(feature_label.to_sym).local?
255
173
  present |= [data_file]
@@ -262,7 +180,6 @@ module ForemanMaintain
262
180
  end
263
181
  [present, absent]
264
182
  end
265
- # rubocop:enable Metrics/MethodLength
266
183
 
267
184
  def validate_hostname?
268
185
  # make sure that the system hostname is the same as the backup
@@ -319,8 +236,7 @@ module ForemanMaintain
319
236
  end
320
237
 
321
238
  def tar_backups_exist?
322
- file_map[:mongo_data][:present] ||
323
- file_map[:pulp_data][:present] ||
239
+ file_map[:pulp_data][:present] ||
324
240
  file_map[:pgsql_data][:present]
325
241
  end
326
242