foreman_maintain 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) 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/repositories/check_non_rh_repository.rb +23 -0
  5. data/definitions/checks/repositories/check_upstream_repository.rb +2 -1
  6. data/definitions/checks/repositories/validate.rb +2 -1
  7. data/definitions/features/apache.rb +19 -0
  8. data/definitions/features/dynflow_sidekiq.rb +1 -1
  9. data/definitions/features/foreman_server.rb +9 -3
  10. data/definitions/features/puppet_server.rb +6 -2
  11. data/definitions/features/service.rb +10 -3
  12. data/definitions/procedures/hammer_setup.rb +1 -1
  13. data/definitions/procedures/installer/run.rb +3 -1
  14. data/definitions/procedures/installer/upgrade.rb +6 -1
  15. data/definitions/procedures/packages/update.rb +1 -1
  16. data/definitions/procedures/service/stop.rb +1 -1
  17. data/definitions/scenarios/packages.rb +36 -14
  18. data/definitions/scenarios/upgrade_to_capsule_6_7.rb +5 -1
  19. data/definitions/scenarios/upgrade_to_capsule_6_7_z.rb +5 -1
  20. data/definitions/scenarios/upgrade_to_capsule_6_8.rb +5 -1
  21. data/definitions/scenarios/upgrade_to_capsule_6_8_z.rb +5 -1
  22. data/definitions/scenarios/upgrade_to_satellite_6_2.rb +5 -1
  23. data/definitions/scenarios/upgrade_to_satellite_6_2_z.rb +5 -1
  24. data/definitions/scenarios/upgrade_to_satellite_6_3.rb +5 -1
  25. data/definitions/scenarios/upgrade_to_satellite_6_3_z.rb +5 -1
  26. data/definitions/scenarios/upgrade_to_satellite_6_4.rb +5 -1
  27. data/definitions/scenarios/upgrade_to_satellite_6_4_z.rb +5 -1
  28. data/definitions/scenarios/upgrade_to_satellite_6_5.rb +5 -1
  29. data/definitions/scenarios/upgrade_to_satellite_6_5_z.rb +5 -1
  30. data/definitions/scenarios/upgrade_to_satellite_6_6.rb +5 -1
  31. data/definitions/scenarios/upgrade_to_satellite_6_6_z.rb +5 -1
  32. data/definitions/scenarios/upgrade_to_satellite_6_7.rb +5 -1
  33. data/definitions/scenarios/upgrade_to_satellite_6_7_z.rb +5 -1
  34. data/definitions/scenarios/upgrade_to_satellite_6_8.rb +5 -1
  35. data/definitions/scenarios/upgrade_to_satellite_6_8_z.rb +5 -1
  36. data/lib/foreman_maintain.rb +27 -0
  37. data/lib/foreman_maintain/cli/upgrade_command.rb +10 -0
  38. data/lib/foreman_maintain/concerns/downstream.rb +1 -2
  39. data/lib/foreman_maintain/package_manager/dnf.rb +11 -5
  40. data/lib/foreman_maintain/package_manager/yum.rb +15 -5
  41. data/lib/foreman_maintain/reporter/cli_reporter.rb +3 -3
  42. data/lib/foreman_maintain/utils/facter.rb +1 -1
  43. data/lib/foreman_maintain/utils/service/abstract.rb +6 -0
  44. data/lib/foreman_maintain/version.rb +1 -1
  45. metadata +4 -4
  46. data/definitions/checks/check_epel_repository.rb +0 -21
  47. data/definitions/procedures/restore/regenerate_missing_queues.rb +0 -52
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee3a3147fb6baeb783edbdcdfb4b595d50fbc6f7540c95f0f1d673bd87a53cf1
4
- data.tar.gz: 3586008b3cc66eb7733113144c0004cd9ce1553fe1b9d8f84e5126f5ddc2cadb
3
+ metadata.gz: e51a96d2df37cf98881bc81a1b67f33dca283ea34b226f2f434273984e6baa59
4
+ data.tar.gz: ad6c47b27ba7e5c2869354c0a60885e8da2158cc3b6feb04df614ccc78c395d5
5
5
  SHA512:
6
- metadata.gz: e5df43e8cd8514d5489351ace62f2c37ff3558316faf2a9b475f4bd8eb5b624175dbb589ffef216df01feea18cb6a4592466afc8b32ccaca344c0280fafe99fb
7
- data.tar.gz: 3c03b1e96a98c2d5800d69633c0584e8cd5632c1c663039a556e8bb63cd8cf45623a57c325266c9e3323d740424c683f6d29d5b53dbd23465a5fb7de56ec7d32
6
+ metadata.gz: ddd22571061620757eaa7d814c34c7c4d06801361ebba1296b5089a345ed61ac91c41fbaa97f643bb8535bf5644d5e96065dccbd66681d6b3516963462f1d940
7
+ data.tar.gz: 9f0023b28042b0f5145a7c2b60b91a8194216eeaa5936987cb91504c49a502a9dfd03c21d3d527cc7487a14a7abe2d8513dcc66a7f47454fa9f3bdc61debdb85
@@ -4,7 +4,8 @@ class Checks::CheckHotfixInstalled < ForemanMaintain::Check
4
4
  description 'Check to verify if any hotfix installed on system'
5
5
  tags :pre_upgrade
6
6
  preparation_steps do
7
- Procedures::Packages::Install.new(:packages => %w[yum-utils])
7
+ [Checks::Repositories::CheckNonRhRepository.new,
8
+ Procedures::Packages::Install.new(:packages => %w[yum-utils])]
8
9
  end
9
10
 
10
11
  confine do
@@ -3,8 +3,15 @@ module Checks
3
3
  class Performance < ForemanMaintain::Check
4
4
  metadata do
5
5
  label :disk_performance
6
- tags :pre_upgrade
7
- preparation_steps { Procedures::Packages::Install.new(:packages => %w[fio]) }
6
+ preparation_steps do
7
+ if feature(:instance).downstream
8
+ [Checks::Repositories::CheckNonRhRepository.new,
9
+ Procedures::Packages::Install.new(:packages => %w[fio])]
10
+ else
11
+ [Procedures::Packages::Install.new(:packages => %w[fio])]
12
+ end
13
+ end
14
+
8
15
  confine do
9
16
  feature(:instance).pulp
10
17
  end
@@ -0,0 +1,23 @@
1
+ module Checks::Repositories
2
+ class CheckNonRhRepository < ForemanMaintain::Check
3
+ metadata do
4
+ label :check_non_redhat_repository
5
+ description "Check whether system don't have any non Red Hat repositories(Eg: EPEL) enabled"
6
+ tags :pre_upgrade
7
+ confine do
8
+ feature(:instance).downstream
9
+ end
10
+ end
11
+
12
+ def run
13
+ with_spinner('Checking repositories enabled on the system') do
14
+ assert(!epel_enabled?, 'System is subscribed to non Red Hat repositories(Eg: EPEL)')
15
+ end
16
+ end
17
+
18
+ def epel_enabled?
19
+ system_repos = execute("yum repolist enabled -d 6 -e 0| grep -E 'Repo-baseurl|Repo-id'")
20
+ system_repos.to_s.match(/\bepel\b/i)
21
+ end
22
+ end
23
+ end
@@ -4,7 +4,8 @@ class Checks::CheckUpstreamRepository < ForemanMaintain::Check
4
4
  description 'Check if any upstream repositories are enabled on system'
5
5
  tags :pre_upgrade
6
6
  preparation_steps do
7
- Procedures::Packages::Install.new(:packages => %w[yum-utils])
7
+ [Checks::Repositories::CheckNonRhRepository.new,
8
+ Procedures::Packages::Install.new(:packages => %w[yum-utils])]
8
9
  end
9
10
  confine do
10
11
  feature(:instance).downstream
@@ -3,7 +3,8 @@ module Checks::Repositories
3
3
  metadata do
4
4
  description 'Validate availability of repositories'
5
5
  preparation_steps do
6
- Procedures::Packages::Install.new(:packages => [ForemanMaintain::Utils::Facter.package])
6
+ [Checks::Repositories::CheckNonRhRepository.new,
7
+ Procedures::Packages::Install.new(:packages => [ForemanMaintain::Utils::Facter.package])]
7
8
  end
8
9
 
9
10
  confine do
@@ -0,0 +1,19 @@
1
+ class Features::Apache < ForemanMaintain::Feature
2
+ metadata do
3
+ label :apache
4
+
5
+ confine do
6
+ find_package('httpd')
7
+ end
8
+ end
9
+
10
+ def services
11
+ [
12
+ system_service('httpd', 30)
13
+ ]
14
+ end
15
+
16
+ def config_files
17
+ ['/etc/httpd']
18
+ end
19
+ end
@@ -13,7 +13,7 @@ class Features::DynflowSidekiq < ForemanMaintain::Feature
13
13
 
14
14
  def config_files
15
15
  # Workaround until foreman-installer can deploy scaled workers
16
- service_symlinks = configured_services.map do |service|
16
+ service_symlinks = configured_instances.map do |service|
17
17
  "/etc/systemd/system/multi-user.target.wants/#{service}.service"
18
18
  end
19
19
  [
@@ -9,9 +9,11 @@ module ForemanMaintain
9
9
  end
10
10
 
11
11
  def services
12
- [
13
- system_service('httpd', 30)
14
- ]
12
+ if execute?('systemctl is-enabled foreman')
13
+ [system_service('foreman', 30, :socket => 'foreman')]
14
+ else
15
+ [system_service('httpd', 30)]
16
+ end
15
17
  end
16
18
 
17
19
  def plugins
@@ -41,6 +43,10 @@ module ForemanMaintain
41
43
  '/var/lib/foreman/public'
42
44
  ]
43
45
  end
46
+
47
+ def services_running?
48
+ services.all?(&:running?)
49
+ end
44
50
  end
45
51
  end
46
52
  end
@@ -29,7 +29,7 @@ class Features::PuppetServer < ForemanMaintain::Feature
29
29
  end
30
30
 
31
31
  def puppet_version
32
- version(execute!('puppet --version'))
32
+ version(execute!("#{puppet_path} --version"))
33
33
  end
34
34
 
35
35
  def find_empty_cacert_request_files
@@ -56,6 +56,10 @@ class Features::PuppetServer < ForemanMaintain::Feature
56
56
  end
57
57
 
58
58
  def puppet_ssldir_path
59
- execute!('puppet master --configprint ssldir')
59
+ execute!("#{puppet_path} config print ssldir")
60
+ end
61
+
62
+ def puppet_path
63
+ '/opt/puppetlabs/bin/puppet'
60
64
  end
61
65
  end
@@ -27,7 +27,7 @@ class Features::Service < ForemanMaintain::Feature
27
27
  end
28
28
 
29
29
  def filtered_services(options)
30
- service_list = existing_services
30
+ service_list = include_unregistered_services(existing_services, options[:include])
31
31
  service_list = filter_services(service_list, options)
32
32
  raise 'No services found matching your parameters' unless service_list.any?
33
33
 
@@ -99,9 +99,14 @@ class Features::Service < ForemanMaintain::Feature
99
99
  %w[start stop restart status enable disable].include?(action)
100
100
  end
101
101
 
102
- def filter_services(service_list, options)
103
- service_list = include_unregistered_services(service_list, options[:include])
102
+ def extend_service_list_with_sockets(service_list, options)
103
+ return service_list unless options[:include_sockets]
104
+
105
+ socket_list = service_list.map(&:socket).compact.select(&:exist?)
106
+ service_list + socket_list
107
+ end
104
108
 
109
+ def filter_services(service_list, options)
105
110
  if options[:only] && options[:only].any?
106
111
  service_list = service_list.select do |service|
107
112
  options[:only].any? { |opt| service.matches?(opt) }
@@ -112,6 +117,8 @@ class Features::Service < ForemanMaintain::Feature
112
117
  if options[:exclude] && options[:exclude].any?
113
118
  service_list = service_list.reject { |service| options[:exclude].include?(service.name) }
114
119
  end
120
+
121
+ service_list = extend_service_list_with_sockets(service_list, options)
115
122
  service_list.sort
116
123
  end
117
124
 
@@ -5,7 +5,7 @@ class Procedures::HammerSetup < ForemanMaintain::Procedure
5
5
  end
6
6
 
7
7
  def run
8
- if feature(:foreman_server) && ForemanMaintain::Utils.system_service('httpd', 30).running?
8
+ if feature(:foreman_server) && feature(:foreman_server).services_running?
9
9
  puts 'Configuring Hammer CLI...'
10
10
  result = feature(:hammer).setup_admin_access
11
11
  logger.info 'Hammer was configured successfully.' if result
@@ -2,10 +2,12 @@ module Procedures::Installer
2
2
  class Run < ForemanMaintain::Procedure
3
3
  metadata do
4
4
  param :arguments, 'Arguments passed to installer'
5
+ param :assumeyes, 'Do not ask for confirmation'
5
6
  end
6
7
 
7
8
  def run
8
- feature(:installer).run(@arguments, :interactive => true)
9
+ assumeyes_val = @assumeyes.nil? ? assumeyes? : @assumeyes
10
+ feature(:installer).run(@arguments, :interactive => !assumeyes_val)
9
11
  end
10
12
 
11
13
  def description
@@ -1,7 +1,12 @@
1
1
  module Procedures::Installer
2
2
  class Upgrade < ForemanMaintain::Procedure
3
+ metadata do
4
+ param :assumeyes, 'Do not ask for confirmation'
5
+ end
6
+
3
7
  def run
4
- feature(:installer).upgrade(:interactive => true)
8
+ assumeyes_val = @assumeyes.nil? ? assumeyes? : @assumeyes
9
+ feature(:installer).run(@arguments, :interactive => !assumeyes_val)
5
10
  end
6
11
  end
7
12
  end
@@ -10,7 +10,7 @@ module Procedures::Packages
10
10
 
11
11
  def run
12
12
  assumeyes_val = @assumeyes.nil? ? assumeyes? : @assumeyes
13
- package_manager.clean_cache
13
+ package_manager.clean_cache(:assumeyes => assumeyes_val)
14
14
  packages_action(:update, @packages, :assumeyes => assumeyes_val)
15
15
  rescue ForemanMaintain::Error::ExecutionError => e
16
16
  if @warn_on_errors
@@ -8,7 +8,7 @@ module Procedures::Service
8
8
  end
9
9
 
10
10
  def run
11
- run_service_action('stop', common_options)
11
+ run_service_action('stop', common_options.merge(:include_sockets => true))
12
12
  end
13
13
  end
14
14
  end
@@ -1,5 +1,16 @@
1
1
  module ForemanMaintain::Scenarios
2
2
  module Packages
3
+ def self.skip_installer_run?(packages_list)
4
+ packages_list = packages_list.split(',').map(&:strip) if packages_list.is_a?(String)
5
+
6
+ return false unless packages_list.any? { |p| p.include?('foreman_maintain') }
7
+ return true if packages_list.length == 1
8
+
9
+ fm_pkg = ForemanMaintain.main_package_name
10
+ puts "ERROR: install or update '#{fm_pkg}' package individually."
11
+ exit 1
12
+ end
13
+
3
14
  class Status < ForemanMaintain::Scenario
4
15
  metadata do
5
16
  label :packages_status
@@ -45,12 +56,17 @@ module ForemanMaintain::Scenarios
45
56
  end
46
57
 
47
58
  def compose
48
- add_step_with_context(Procedures::Packages::InstallerConfirmation)
49
- add_step_with_context(Procedures::Packages::UnlockVersions)
50
- add_step_with_context(Procedures::Packages::Install,
51
- :force => true, :warn_on_errors => true)
52
- add_step_with_context(Procedures::Installer::Upgrade)
53
- add_step(Procedures::Packages::LockingStatus)
59
+ if Packages.skip_installer_run?(context.get(:packages))
60
+ add_step_with_context(Procedures::Packages::Install,
61
+ :force => true, :warn_on_errors => true)
62
+ else
63
+ add_step_with_context(Procedures::Packages::InstallerConfirmation)
64
+ add_step_with_context(Procedures::Packages::UnlockVersions)
65
+ add_step_with_context(Procedures::Packages::Install,
66
+ :force => true, :warn_on_errors => true)
67
+ add_step_with_context(Procedures::Installer::Upgrade)
68
+ add_step(Procedures::Packages::LockingStatus)
69
+ end
54
70
  end
55
71
 
56
72
  def set_context_mapping
@@ -70,14 +86,20 @@ module ForemanMaintain::Scenarios
70
86
  end
71
87
 
72
88
  def compose
73
- add_steps_with_context(
74
- Procedures::Packages::UpdateAllConfirmation,
75
- Procedures::Packages::InstallerConfirmation,
76
- Procedures::Packages::UnlockVersions
77
- )
78
- add_step_with_context(Procedures::Packages::Update, :force => true, :warn_on_errors => true)
79
- add_step_with_context(Procedures::Installer::Upgrade)
80
- add_step(Procedures::Packages::LockingStatus)
89
+ if Packages.skip_installer_run?(context.get(:packages))
90
+ add_step_with_context(Procedures::Packages::Update,
91
+ :force => true, :warn_on_errors => true)
92
+ else
93
+ add_steps_with_context(
94
+ Procedures::Packages::UpdateAllConfirmation,
95
+ Procedures::Packages::InstallerConfirmation,
96
+ Procedures::Packages::UnlockVersions
97
+ )
98
+ add_step_with_context(Procedures::Packages::Update,
99
+ :force => true, :warn_on_errors => true)
100
+ add_step_with_context(Procedures::Installer::Upgrade)
101
+ add_step(Procedures::Packages::LockingStatus)
102
+ end
81
103
  end
82
104
 
83
105
  def set_context_mapping
@@ -49,11 +49,15 @@ module Scenarios::Capsule_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::Capsule_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::Capsule_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::Capsule_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
 
@@ -49,11 +49,15 @@ module Scenarios::Satellite_6_2
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.2'))
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_2_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.2'))
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
 
@@ -50,11 +50,15 @@ module Scenarios::Satellite_6_3
50
50
  tags :migrations
51
51
  end
52
52
 
53
+ def set_context_mapping
54
+ context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
55
+ end
56
+
53
57
  def compose
54
58
  add_step(Procedures::Repositories::Setup.new(:version => '6.3'))
55
59
  add_step(Procedures::Packages::UnlockVersions.new)
56
60
  add_step(Procedures::Packages::Update.new(:assumeyes => true))
57
- add_step(Procedures::Installer::Upgrade.new)
61
+ add_step_with_context(Procedures::Installer::Upgrade)
58
62
  end
59
63
  end
60
64
 
@@ -49,11 +49,15 @@ module Scenarios::Satellite_6_3_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.3'))
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
 
@@ -50,11 +50,15 @@ module Scenarios::Satellite_6_4
50
50
  tags :migrations
51
51
  end
52
52
 
53
+ def set_context_mapping
54
+ context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
55
+ end
56
+
53
57
  def compose
54
58
  add_step(Procedures::Repositories::Setup.new(:version => '6.4'))
55
59
  add_step(Procedures::Packages::UnlockVersions.new)
56
60
  add_step(Procedures::Packages::Update.new(:assumeyes => true))
57
- add_step(Procedures::Installer::Upgrade.new)
61
+ add_step_with_context(Procedures::Installer::Upgrade)
58
62
  end
59
63
  end
60
64
 
@@ -49,11 +49,15 @@ module Scenarios::Satellite_6_4_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.4'))
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_5
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.5'))
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_5_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.5'))
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_6
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_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
@@ -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"
@@ -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
 
@@ -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.4'.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.4
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-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -122,7 +122,6 @@ 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
@@ -148,6 +147,7 @@ files:
148
147
  - definitions/checks/puppet/provide_upgrade_guide.rb
149
148
  - definitions/checks/puppet/verify_no_empty_cacert_requests.rb
150
149
  - definitions/checks/remote_execution/verify_settings_file_already_exists.rb
150
+ - definitions/checks/repositories/check_non_rh_repository.rb
151
151
  - definitions/checks/repositories/check_upstream_repository.rb
152
152
  - definitions/checks/repositories/validate.rb
153
153
  - definitions/checks/restore/validate_backup.rb
@@ -158,6 +158,7 @@ files:
158
158
  - definitions/checks/system_registration.rb
159
159
  - definitions/checks/version_locking_enabled.rb
160
160
  - definitions/checks/yum_exclude.rb
161
+ - definitions/features/apache.rb
161
162
  - definitions/features/candlepin.rb
162
163
  - definitions/features/candlepin_database.rb
163
164
  - definitions/features/capsule.rb
@@ -264,7 +265,6 @@ files:
264
265
  - definitions/procedures/restore/pg_global_objects.rb
265
266
  - definitions/procedures/restore/postgres_owner.rb
266
267
  - definitions/procedures/restore/pulpcore_dump.rb
267
- - definitions/procedures/restore/regenerate_missing_queues.rb
268
268
  - definitions/procedures/selinux/set_file_security.rb
269
269
  - definitions/procedures/service/base.rb
270
270
  - definitions/procedures/service/daemon_reload.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
@@ -1,52 +0,0 @@
1
- module Procedures::Restore
2
- class RegenerateMissingQueues < ForemanMaintain::Procedure
3
-
4
- metadata do
5
- description 'Regenrate queues'
6
-
7
- param :handle_services,
8
- 'Stop and start services if required',
9
- :flag => true,
10
- :default => false
11
- end
12
-
13
- def hostname
14
- execute('hostname -f')
15
- end
16
-
17
- def ssl_cert
18
- "/etc/pki/katello/certs/#{hostanme}-qpid-broker.crt"
19
- end
20
-
21
- def ssl_key
22
- "/etc/pki/katello/private/#{hostanme}-qpid-broker.key"
23
- end
24
-
25
- def amqps_url
26
- 'amqps://localhost:5671'
27
- end
28
-
29
- def run
30
- with_spinner('Resetting the queues') do |spinner|
31
- reset_queues
32
- end
33
- end
34
-
35
- def reset_queues
36
- execute!('rm -rf /var/lib/qpidd/.qpidd/qls')
37
- Procedures::Service::Start(:only => 'qpidd')
38
- puts "Sleeping for 60 seconds for qpid to start fully"
39
- sleep 60
40
-
41
- puts "Recreating infrastructure queues.."
42
- execute!("qpid-config --ssl-certificate #{ssl_cert} --ssl-key #{ssl_key} -b #{amqps_url} add exchange topic event --durable")
43
- execute!("qpid-config --ssl-certificate #{ssl_cert} --ssl-key #{ssl_key} -b #{amqps_url} add queue katello_event_queue --durable")
44
- %w[compliance.created entitlement.created entitlement.deleted pool.created pool.deleted].each do |key|
45
- execute!("qpid-config --ssl-certificate #{ssl_cert} --ssl-key #{ssl_key} -b #{amqps_url} bind event katello_event_queue #{key}")
46
- end
47
-
48
-
49
-
50
- end
51
- end
52
- end