foreman_maintain 0.6.3 → 0.6.8

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/definitions/checks/check_hotfix_installed.rb +2 -1
  3. data/definitions/checks/disk/performance.rb +9 -2
  4. data/definitions/checks/env_proxy.rb +13 -0
  5. data/definitions/checks/foreman/check_corrupted_roles.rb +14 -2
  6. data/definitions/checks/foreman_proxy/check_tftp_storage.rb +52 -0
  7. data/definitions/checks/repositories/check_non_rh_repository.rb +23 -0
  8. data/definitions/checks/repositories/check_upstream_repository.rb +2 -1
  9. data/definitions/checks/repositories/validate.rb +2 -1
  10. data/definitions/features/apache.rb +19 -0
  11. data/definitions/features/capsule.rb +2 -1
  12. data/definitions/features/dynflow_sidekiq.rb +1 -1
  13. data/definitions/features/foreman_proxy.rb +30 -5
  14. data/definitions/features/foreman_server.rb +10 -4
  15. data/definitions/features/puppet_server.rb +6 -2
  16. data/definitions/features/service.rb +10 -3
  17. data/definitions/procedures/backup/metadata.rb +2 -0
  18. data/definitions/procedures/backup/snapshot/logical_volume_confirmation.rb +1 -1
  19. data/definitions/procedures/content/switchover.rb +2 -1
  20. data/definitions/procedures/hammer_setup.rb +1 -1
  21. data/definitions/procedures/installer/run.rb +3 -1
  22. data/definitions/procedures/installer/upgrade.rb +6 -1
  23. data/definitions/procedures/packages/update.rb +1 -1
  24. data/definitions/procedures/restore/configs.rb +6 -0
  25. data/definitions/procedures/restore/regenerate_queues.rb +69 -0
  26. data/definitions/procedures/service/stop.rb +1 -1
  27. data/definitions/scenarios/backup.rb +1 -0
  28. data/definitions/scenarios/packages.rb +39 -14
  29. data/definitions/scenarios/restore.rb +17 -2
  30. data/definitions/scenarios/upgrade_to_capsule_6_8.rb +5 -1
  31. data/definitions/scenarios/upgrade_to_capsule_6_8_z.rb +5 -1
  32. data/definitions/scenarios/upgrade_to_satellite_6_2.rb +5 -1
  33. data/definitions/scenarios/upgrade_to_satellite_6_2_z.rb +5 -1
  34. data/definitions/scenarios/upgrade_to_satellite_6_3.rb +5 -1
  35. data/definitions/scenarios/upgrade_to_satellite_6_3_z.rb +5 -1
  36. data/definitions/scenarios/upgrade_to_satellite_6_4.rb +5 -1
  37. data/definitions/scenarios/upgrade_to_satellite_6_4_z.rb +5 -1
  38. data/definitions/scenarios/upgrade_to_satellite_6_5.rb +5 -1
  39. data/definitions/scenarios/upgrade_to_satellite_6_5_z.rb +5 -1
  40. data/definitions/scenarios/upgrade_to_satellite_6_6.rb +5 -1
  41. data/definitions/scenarios/upgrade_to_satellite_6_6_z.rb +5 -1
  42. data/definitions/scenarios/upgrade_to_satellite_6_7.rb +5 -1
  43. data/definitions/scenarios/upgrade_to_satellite_6_7_z.rb +5 -1
  44. data/definitions/scenarios/upgrade_to_satellite_6_8.rb +5 -1
  45. data/definitions/scenarios/upgrade_to_satellite_6_8_z.rb +5 -1
  46. data/lib/foreman_maintain.rb +27 -0
  47. data/lib/foreman_maintain/cli/restore_command.rb +2 -1
  48. data/lib/foreman_maintain/cli/upgrade_command.rb +10 -0
  49. data/lib/foreman_maintain/concerns/downstream.rb +9 -14
  50. data/lib/foreman_maintain/package_manager/dnf.rb +11 -5
  51. data/lib/foreman_maintain/package_manager/yum.rb +15 -5
  52. data/lib/foreman_maintain/reporter/cli_reporter.rb +3 -3
  53. data/lib/foreman_maintain/utils/backup.rb +4 -0
  54. data/lib/foreman_maintain/utils/facter.rb +1 -1
  55. data/lib/foreman_maintain/utils/service/abstract.rb +6 -0
  56. data/lib/foreman_maintain/version.rb +1 -1
  57. metadata +7 -6
  58. data/definitions/checks/check_epel_repository.rb +0 -21
  59. data/definitions/procedures/restore/regenerate_missing_queues.rb +0 -52
  60. data/definitions/scenarios/upgrade_to_capsule_6_7.rb +0 -84
  61. data/definitions/scenarios/upgrade_to_capsule_6_7_z.rb +0 -84
@@ -49,11 +49,15 @@ module Scenarios::Satellite_6_6_z
49
49
  tags :migrations
50
50
  end
51
51
 
52
+ def set_context_mapping
53
+ context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
54
+ end
55
+
52
56
  def compose
53
57
  add_step(Procedures::Repositories::Setup.new(:version => '6.6'))
54
58
  add_step(Procedures::Packages::UnlockVersions.new)
55
59
  add_step(Procedures::Packages::Update.new(:assumeyes => true))
56
- add_step(Procedures::Installer::Upgrade.new)
60
+ add_step_with_context(Procedures::Installer::Upgrade)
57
61
  end
58
62
  end
59
63
 
@@ -49,11 +49,15 @@ module Scenarios::Satellite_6_7
49
49
  tags :migrations
50
50
  end
51
51
 
52
+ def set_context_mapping
53
+ context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
54
+ end
55
+
52
56
  def compose
53
57
  add_step(Procedures::Repositories::Setup.new(:version => '6.7'))
54
58
  add_step(Procedures::Packages::UnlockVersions.new)
55
59
  add_step(Procedures::Packages::Update.new(:assumeyes => true))
56
- add_step(Procedures::Installer::Upgrade.new)
60
+ add_step_with_context(Procedures::Installer::Upgrade)
57
61
  end
58
62
  end
59
63
 
@@ -49,11 +49,15 @@ module Scenarios::Satellite_6_7_z
49
49
  tags :migrations
50
50
  end
51
51
 
52
+ def set_context_mapping
53
+ context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
54
+ end
55
+
52
56
  def compose
53
57
  add_step(Procedures::Repositories::Setup.new(:version => '6.7'))
54
58
  add_step(Procedures::Packages::UnlockVersions.new)
55
59
  add_step(Procedures::Packages::Update.new(:assumeyes => true))
56
- add_step(Procedures::Installer::Upgrade.new)
60
+ add_step_with_context(Procedures::Installer::Upgrade)
57
61
  end
58
62
  end
59
63
 
@@ -49,11 +49,15 @@ module Scenarios::Satellite_6_8
49
49
  tags :migrations
50
50
  end
51
51
 
52
+ def set_context_mapping
53
+ context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
54
+ end
55
+
52
56
  def compose
53
57
  add_step(Procedures::Repositories::Setup.new(:version => '6.8'))
54
58
  add_step(Procedures::Packages::UnlockVersions.new)
55
59
  add_step(Procedures::Packages::Update.new(:assumeyes => true))
56
- add_step(Procedures::Installer::Upgrade.new)
60
+ add_step_with_context(Procedures::Installer::Upgrade)
57
61
  end
58
62
  end
59
63
 
@@ -49,11 +49,15 @@ module Scenarios::Satellite_6_8_z
49
49
  tags :migrations
50
50
  end
51
51
 
52
+ def set_context_mapping
53
+ context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
54
+ end
55
+
52
56
  def compose
53
57
  add_step(Procedures::Repositories::Setup.new(:version => '6.8'))
54
58
  add_step(Procedures::Packages::UnlockVersions.new)
55
59
  add_step(Procedures::Packages::Update.new(:assumeyes => true))
56
- add_step(Procedures::Installer::Upgrade.new)
60
+ add_step_with_context(Procedures::Installer::Upgrade)
57
61
  end
58
62
  end
59
63
 
@@ -143,5 +143,32 @@ module ForemanMaintain
143
143
  def upgrade_in_progress
144
144
  storage[:upgrade_target_version]
145
145
  end
146
+
147
+ def pkg_and_cmd_name
148
+ instance_feature = ForemanMaintain.available_features(:label => :instance).first
149
+ if instance_feature.downstream
150
+ return %w[satellite-maintain satellite-maintain]
151
+ end
152
+
153
+ [main_package_name, 'foreman-maintain']
154
+ end
155
+
156
+ def perform_self_upgrade
157
+ package_name, command = pkg_and_cmd_name
158
+
159
+ puts "Checking for new version of #{package_name}..."
160
+ if ForemanMaintain.package_manager.update_available?(main_package_name)
161
+ puts "\nUpdating #{package_name} package."
162
+ ForemanMaintain.package_manager.update(main_package_name, :assumeyes => true)
163
+ puts "\nThe #{package_name} package successfully updated."\
164
+ "\nRe-run #{command} with required options!"
165
+ exit 0
166
+ end
167
+ puts "Nothing to update, can't find new version of #{package_name}."
168
+ end
169
+
170
+ def main_package_name
171
+ 'rubygem-foreman_maintain'
172
+ end
146
173
  end
147
174
  end
@@ -13,7 +13,8 @@ module ForemanMaintain
13
13
  :backup_dir => @backup_dir,
14
14
  :incremental_backup => @incremental || incremental_backup?
15
15
  )
16
- run_scenario(scenario)
16
+ rescue_scenario = Scenarios::RestoreRescue.new
17
+ run_scenario(scenario, rescue_scenario)
17
18
  exit runner.exit_code
18
19
  end
19
20
 
@@ -6,6 +6,11 @@ module ForemanMaintain
6
6
  :required => false
7
7
  end
8
8
 
9
+ def self.disable_self_upgrade_option
10
+ option '--disable-self-upgrade', :flag, 'Disable automatic self upgrade',
11
+ :default => false
12
+ end
13
+
9
14
  def current_target_version
10
15
  current_target_version = ForemanMaintain::UpgradeRunner.current_target_version
11
16
  if current_target_version && target_version && target_version != current_target_version
@@ -56,8 +61,10 @@ module ForemanMaintain
56
61
  subcommand 'check', 'Run pre-upgrade checks before upgrading to specified version' do
57
62
  target_version_option
58
63
  interactive_option
64
+ disable_self_upgrade_option
59
65
 
60
66
  def execute
67
+ ForemanMaintain.perform_self_upgrade unless disable_self_upgrade?
61
68
  upgrade_runner.run_phase(:pre_upgrade_checks)
62
69
  exit upgrade_runner.exit_code
63
70
  end
@@ -66,6 +73,8 @@ module ForemanMaintain
66
73
  subcommand 'run', 'Run full upgrade to a specified version' do
67
74
  target_version_option
68
75
  interactive_option
76
+ disable_self_upgrade_option
77
+
69
78
  option '--phase', 'phase', 'run only a specific phase', :required => false do |phase|
70
79
  unless UpgradeRunner::PHASES.include?(phase.to_sym)
71
80
  raise Error::UsageError, "Unknown phase #{phase}"
@@ -74,6 +83,7 @@ module ForemanMaintain
74
83
  end
75
84
 
76
85
  def execute
86
+ ForemanMaintain.perform_self_upgrade unless disable_self_upgrade?
77
87
  if phase
78
88
  upgrade_runner.run_phase(phase.to_sym)
79
89
  else
@@ -87,8 +87,7 @@ module ForemanMaintain
87
87
  else
88
88
  "rhel-#{rh_version_major}-server-#{package_name}-#{full_version}-rpms"
89
89
  end
90
-
91
- if current_minor_version == '6.3' && server_version.to_s != '6.4' && (
90
+ if current_minor_version == '6.3' && full_version.to_s != '6.4' && (
92
91
  feature(:puppet_server) && feature(:puppet_server).puppet_version.major == 4)
93
92
  # TODO: confirm repo for capsule. It might be same repo
94
93
  repos << "rhel-#{rh_version_major}-server-satellite-tools-6.3-puppet4-rpms"
@@ -98,23 +97,19 @@ module ForemanMaintain
98
97
  end
99
98
 
100
99
  def common_repos(rh_version_major, full_version)
101
- repos_arrary = common_repos_array(rh_version_major, full_version)
100
+ repos_arrary = if ENV['FOREMAN_MAINTAIN_USE_BETA'] == '1'
101
+ ["rhel-#{rh_version_major}-server-satellite-maintenance-6-beta-rpms",
102
+ "rhel-#{rh_version_major}-server-satellite-tools-6-beta-rpms"]
103
+ else
104
+ ["rhel-#{rh_version_major}-server-satellite-maintenance-6-rpms",
105
+ "rhel-#{rh_version_major}-server-satellite-tools-#{full_version}-rpms"]
106
+ end
107
+
102
108
  return repos_arrary.first(1) if feature(:capsule)
103
109
 
104
110
  repos_arrary
105
111
  end
106
112
 
107
- def common_repos_array(rh_version_major, full_version)
108
- ["rhel-#{rh_version_major}-server-satellite-maintenance-6#{use_beta}-rpms",
109
- "rhel-#{rh_version_major}-server-satellite-tools-#{full_version}#{use_beta}-rpms"]
110
- end
111
-
112
- def use_beta
113
- return '-beta' if ENV['FOREMAN_MAINTAIN_USE_BETA'] == '1'
114
-
115
- nil
116
- end
117
-
118
113
  def main_rh_repos(rh_version_major)
119
114
  ["rhel-#{rh_version_major}-server-rpms",
120
115
  "rhel-server-rhscl-#{rh_version_major}-rpms"]
@@ -1,17 +1,23 @@
1
1
  module ForemanMaintain::PackageManager
2
2
  class Dnf < Yum
3
- def clean_cache
4
- dnf_action('clean', 'all')
3
+ def clean_cache(assumeyes: false)
4
+ dnf_action('clean', 'all', :assumeyes => assumeyes)
5
5
  super
6
6
  end
7
7
 
8
8
  private
9
9
 
10
- def dnf_action(action, packages, assumeyes: false)
10
+ def dnf_action(action, packages, with_status: false, assumeyes: false)
11
11
  yum_options = []
12
12
  yum_options << '-y' if assumeyes
13
- sys.execute!("dnf #{yum_options.join(' ')} #{action} #{packages.join(' ')}",
14
- :interactive => true)
13
+ if with_status
14
+ sys.execute_with_status("dnf #{yum_options.join(' ')} #{action} #{packages.join(' ')}",
15
+ :interactive => !assumeyes)
16
+ else
17
+ sys.execute!("dnf #{yum_options.join(' ')} #{action} #{packages.join(' ')}",
18
+ :interactive => !assumeyes)
19
+
20
+ end
15
21
  end
16
22
  end
17
23
  end
@@ -57,8 +57,13 @@ module ForemanMaintain::PackageManager
57
57
  yum_action('update', packages, :assumeyes => assumeyes)
58
58
  end
59
59
 
60
- def clean_cache
61
- yum_action('clean', 'all')
60
+ def clean_cache(assumeyes: false)
61
+ yum_action('clean', 'all', :assumeyes => assumeyes)
62
+ end
63
+
64
+ def update_available?(package)
65
+ cmd_output = yum_action('check-update -q', package, :with_status => true, :assumeyes => false)
66
+ cmd_output[0] == 100
62
67
  end
63
68
 
64
69
  def files_not_owned_by_package(directory)
@@ -96,14 +101,19 @@ module ForemanMaintain::PackageManager
96
101
  File.open(protector_config_file, 'w') { |file| file.puts config }
97
102
  end
98
103
 
99
- def yum_action(action, packages, assumeyes: false)
104
+ def yum_action(action, packages, with_status: false, assumeyes: false)
100
105
  yum_options = []
101
106
  packages = [packages].flatten(1)
102
107
  yum_options << '-y' if assumeyes
103
108
  yum_options_s = yum_options.empty? ? '' : ' ' + yum_options.join(' ')
104
109
  packages_s = packages.empty? ? '' : ' ' + packages.join(' ')
105
- sys.execute!("yum#{yum_options_s} #{action}#{packages_s}",
106
- :interactive => true)
110
+ if with_status
111
+ sys.execute_with_status("yum#{yum_options_s} #{action}#{packages_s}",
112
+ :interactive => !assumeyes)
113
+ else
114
+ sys.execute!("yum#{yum_options_s} #{action}#{packages_s}",
115
+ :interactive => !assumeyes)
116
+ end
107
117
  end
108
118
 
109
119
  def install_extras(src, dest, override: false)
@@ -16,7 +16,6 @@ module ForemanMaintain
16
16
  @spinner_chars = %w[| / - \\]
17
17
  @current_line = ''
18
18
  @puts_needed = false
19
- start_spinner
20
19
  end
21
20
 
22
21
  def update(line)
@@ -42,8 +41,6 @@ module ForemanMaintain
42
41
  end
43
42
  end
44
43
 
45
- private
46
-
47
44
  def start_spinner
48
45
  @thread = Thread.new do
49
46
  loop do
@@ -53,6 +50,8 @@ module ForemanMaintain
53
50
  end
54
51
  end
55
52
 
53
+ private
54
+
56
55
  def spin
57
56
  @mutex.synchronize do
58
57
  return unless @active
@@ -80,6 +79,7 @@ module ForemanMaintain
80
79
  @line_char = '-'
81
80
  @cell_char = '|'
82
81
  @spinner = Spinner.new(self)
82
+ @spinner.start_spinner if @stdout.tty?
83
83
  @last_line = ''
84
84
  end
85
85
 
@@ -204,6 +204,10 @@ module ForemanMaintain
204
204
  def incremental?
205
205
  !!metadata.fetch('incremental', false)
206
206
  end
207
+
208
+ def online_backup?
209
+ !!metadata.fetch('online', false)
210
+ end
207
211
  end
208
212
  end
209
213
  end
@@ -5,7 +5,7 @@ module ForemanMaintain::Utils
5
5
  FACTER_FILES = %w[/usr/bin/facter /opt/puppetlabs/bin/facter].freeze
6
6
 
7
7
  def self.package
8
- puppet_version = version(execute!('puppet --version'))
8
+ puppet_version = version(execute!('/opt/puppetlabs/bin/puppet --version'))
9
9
 
10
10
  puppet_version.major >= 4 ? 'puppet-agent' : 'facter'
11
11
  end
@@ -10,6 +10,12 @@ module ForemanMaintain::Utils
10
10
  @options = options
11
11
  end
12
12
 
13
+ def socket
14
+ if @options[:socket]
15
+ self.class.new("#{@options[:socket]}.socket", priority)
16
+ end
17
+ end
18
+
13
19
  def <=>(other)
14
20
  prio_cmp = @priority <=> other.priority
15
21
  prio_cmp == 0 ? @name <=> other.name : prio_cmp
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '0.6.3'.freeze
2
+ VERSION = '0.6.8'.freeze
3
3
  end
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.6.3
4
+ version: 0.6.8
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: 2020-04-02 00:00:00.000000000 Z
11
+ date: 2020-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -122,11 +122,11 @@ files:
122
122
  - definitions/checks/backup/directory_ready.rb
123
123
  - definitions/checks/candlepin/db_up.rb
124
124
  - definitions/checks/candlepin/validate_db.rb
125
- - definitions/checks/check_epel_repository.rb
126
125
  - definitions/checks/check_hotfix_installed.rb
127
126
  - definitions/checks/check_tmout.rb
128
127
  - definitions/checks/disk/available_space.rb
129
128
  - definitions/checks/disk/performance.rb
129
+ - definitions/checks/env_proxy.rb
130
130
  - definitions/checks/foreman/check_corrupted_roles.rb
131
131
  - definitions/checks/foreman/check_duplicate_roles.rb
132
132
  - definitions/checks/foreman/db_up.rb
@@ -134,6 +134,7 @@ files:
134
134
  - definitions/checks/foreman/puppet_class_duplicates.rb
135
135
  - definitions/checks/foreman/validate_external_db_version.rb
136
136
  - definitions/checks/foreman_openscap/invalid_report_associations.rb
137
+ - definitions/checks/foreman_proxy/check_tftp_storage.rb
137
138
  - definitions/checks/foreman_proxy/verify_dhcp_config_syntax.rb
138
139
  - definitions/checks/foreman_tasks/invalid/check_old.rb
139
140
  - definitions/checks/foreman_tasks/invalid/check_pending_state.rb
@@ -148,6 +149,7 @@ files:
148
149
  - definitions/checks/puppet/provide_upgrade_guide.rb
149
150
  - definitions/checks/puppet/verify_no_empty_cacert_requests.rb
150
151
  - definitions/checks/remote_execution/verify_settings_file_already_exists.rb
152
+ - definitions/checks/repositories/check_non_rh_repository.rb
151
153
  - definitions/checks/repositories/check_upstream_repository.rb
152
154
  - definitions/checks/repositories/validate.rb
153
155
  - definitions/checks/restore/validate_backup.rb
@@ -158,6 +160,7 @@ files:
158
160
  - definitions/checks/system_registration.rb
159
161
  - definitions/checks/version_locking_enabled.rb
160
162
  - definitions/checks/yum_exclude.rb
163
+ - definitions/features/apache.rb
161
164
  - definitions/features/candlepin.rb
162
165
  - definitions/features/candlepin_database.rb
163
166
  - definitions/features/capsule.rb
@@ -264,7 +267,7 @@ files:
264
267
  - definitions/procedures/restore/pg_global_objects.rb
265
268
  - definitions/procedures/restore/postgres_owner.rb
266
269
  - definitions/procedures/restore/pulpcore_dump.rb
267
- - definitions/procedures/restore/regenerate_missing_queues.rb
270
+ - definitions/procedures/restore/regenerate_queues.rb
268
271
  - definitions/procedures/selinux/set_file_security.rb
269
272
  - definitions/procedures/service/base.rb
270
273
  - definitions/procedures/service/daemon_reload.rb
@@ -283,8 +286,6 @@ files:
283
286
  - definitions/scenarios/packages.rb
284
287
  - definitions/scenarios/restore.rb
285
288
  - definitions/scenarios/services.rb
286
- - definitions/scenarios/upgrade_to_capsule_6_7.rb
287
- - definitions/scenarios/upgrade_to_capsule_6_7_z.rb
288
289
  - definitions/scenarios/upgrade_to_capsule_6_8.rb
289
290
  - definitions/scenarios/upgrade_to_capsule_6_8_z.rb
290
291
  - definitions/scenarios/upgrade_to_satellite_6_2.rb
@@ -1,21 +0,0 @@
1
- class Checks::CheckEpelRepository < ForemanMaintain::Check
2
- metadata do
3
- label :check_epel_repository
4
- description 'Check if EPEL repository enabled on system'
5
- tags :pre_upgrade
6
- confine do
7
- feature(:instance).downstream
8
- end
9
- end
10
-
11
- def run
12
- with_spinner('Checking for presence of EPEL repository') do
13
- assert(!epel_enabled?, 'System is subscribed to EPEL repository')
14
- end
15
- end
16
-
17
- def epel_enabled?
18
- system_repos = execute("yum repolist enabled -d 6 -e 0| grep -E 'Repo-baseurl|Repo-id'")
19
- system_repos.to_s.match(/\bepel\b/i)
20
- end
21
- end