foreman_maintain 0.6.3 → 0.6.4

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 (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