foreman_maintain 0.2.12 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a056ed9a0fd20472827ea8a3ea46fae57e7b2a45
4
- data.tar.gz: 3de797e34bcb2f6cf5e085bb2321bcca1834ebf2
2
+ SHA256:
3
+ metadata.gz: 582123528806343d919cd45a9503596cd5edb30144742aa579f65a7c65eaa5a4
4
+ data.tar.gz: 2735882675a774b98aeb7d41c361bdee8707bf2c25235f420b3cb6cd49e2df7e
5
5
  SHA512:
6
- metadata.gz: 4768ea1e7771072ff64b7e990bd77928d66d97d42011bf3662d902c9719ad541bc8c00d34f108a8cb6afee16ac164eedc6dc2970db59cf50312066cc5fe4a98a
7
- data.tar.gz: 21d87fab7501162c4965d6a83518c9e2a65e00826c3bdf8492d52b7e55990fcbb47445e472301e59ac3dd4b0c9ae8779bdfcb940e2b774f02f4f3377263fd49e
6
+ metadata.gz: 02b5862caf25490bcfa6e8aebcae31ada850eee4492381400255cf9de651ca1e862d5a564b9178c7f239226d2c9ddca0cfb200880d112e2939db97b8ac28ca41
7
+ data.tar.gz: 7fa363c783df0e07e8cec7dd086001e8e082f156c6e512766579484f16ca69d014b2944a320faae65747f7695a83e81c347def707a122335819546ae254f0b8f
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  #
3
3
  # Trivial Passenger memory monitor. By default it is executed from cron every
4
- # five minutes and it kills one process that exceeds the RSS memory threashold
5
- # configured.
4
+ # five minutes and it kills processes exceeding the RSS memory threashold
5
+ # configured with MAX_PRIV_RSS_MEMORY. Up to MAX_TERMINATION processes is
6
+ # terminated during one execution.
6
7
  #
7
8
 
8
9
  # Set to 'false' to completely disable this script.
@@ -14,7 +15,7 @@
14
15
  # Controls amount of processes killed during one run. This number should be
15
16
  # smaller by one or two than maximum allowed amount of processes by passenger
16
17
  # (defaults to 6) so there is at least one process left.
17
- :MAX_TERMINATION: 4
18
+ :MAX_TERMINATION: 1
18
19
 
19
20
  # Kill processes which do not terminate gracefully using SIGKILL after
20
21
  # GRACEFUL_SHUTDOWN_SLEEP period.
@@ -0,0 +1,23 @@
1
+ module Checks
2
+ module Disk
3
+ class AvailableSpace < ForemanMaintain::Check
4
+ metadata do
5
+ label :available_space
6
+ description 'Check to make sure root(/) partition has enough space'
7
+ tags :pre_upgrade
8
+ end
9
+
10
+ MIN_SPACE_IN_MB = 4096
11
+
12
+ def run
13
+ assert(enough_space?, "System has less than #{MIN_SPACE_IN_MB / 1024}GB space available"\
14
+ ' on root(/) partition')
15
+ end
16
+
17
+ def enough_space?
18
+ io_obj = ForemanMaintain::Utils::Disk::IODevice.new('/')
19
+ io_obj.available_space > MIN_SPACE_IN_MB
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,48 @@
1
+ module Checks
2
+ module Foreman
3
+ class PuppetClassDuplicates < ForemanMaintain::Check
4
+ metadata do
5
+ label :puppet_class_duplicates
6
+ for_feature :foreman_database
7
+ description 'Check for duplicate Puppet class records'
8
+ tags :pre_upgrade
9
+ confine do
10
+ check_max_version('foreman', '1.20')
11
+ end
12
+ end
13
+
14
+ def run
15
+ duplicate_names = find_duplicate_names
16
+ assert(duplicate_names.empty?, duplicate_msg(duplicate_names))
17
+ end
18
+
19
+ private
20
+
21
+ def duplicate_msg(duplicate_names)
22
+ msg = "There are #{duplicate_names.count} Puppet classes with duplicities:\n"
23
+ classes_list = duplicate_names.reduce('') do |memo, hash|
24
+ memo.tap { |acc| acc << "#{hash['name']} - #{hash['name_count']}\n" }
25
+ end
26
+ help_msg = 'Please head over to Configure -> Classes'
27
+ help_msg << " and make sure there is only 1 Puppet class record for each name.\n"
28
+ [msg, classes_list, help_msg].join('')
29
+ end
30
+
31
+ def find_duplicate_names
32
+ feature(:foreman_database).query(duplicate_names_query)
33
+ end
34
+
35
+ def duplicate_names_query
36
+ <<-SQL
37
+ SELECT name, name_count
38
+ FROM (
39
+ SELECT name, count(name) AS name_count
40
+ FROM puppetclasses
41
+ GROUP BY name
42
+ ) AS puppetclass_counts
43
+ WHERE name_count > 1
44
+ SQL
45
+ end
46
+ end
47
+ end
48
+ end
@@ -18,19 +18,29 @@ module Checks::Repositories
18
18
  end
19
19
 
20
20
  def run
21
- with_spinner("Validating availability of repositories for #{@version}") do |spinner|
22
- absent_repos = feature(:downstream).absent_repos(@version)
23
- unless absent_repos.empty?
24
- spinner.update('Some repositories missing, calling `subscription-manager refresh`')
25
- feature(:downstream).rhsm_refresh
26
- absent_repos = feature(:downstream).absent_repos(@version)
27
- end
28
- unless absent_repos.empty?
29
- fail!(
30
- "Following repositories are not available on your system: #{absent_repos.join(', ')}"
31
- )
21
+ if feature(:downstream).subscribed_using_activationkey?
22
+ skip 'Your system is subscribed using custom activationkey'
23
+ else
24
+ with_spinner("Validating availability of repositories for #{@version}") do |spinner|
25
+ find_absent_repos(spinner)
32
26
  end
33
27
  end
34
28
  end
29
+
30
+ private
31
+
32
+ def find_absent_repos(spinner)
33
+ absent_repos = feature(:downstream).absent_repos(@version)
34
+ unless absent_repos.empty?
35
+ spinner.update('Some repositories missing, calling `subscription-manager refresh`')
36
+ feature(:downstream).rhsm_refresh
37
+ absent_repos = feature(:downstream).absent_repos(@version)
38
+ end
39
+ unless absent_repos.empty?
40
+ fail!(
41
+ "Following repositories are not available on your system: #{absent_repos.join(', ')}"
42
+ )
43
+ end
44
+ end
35
45
  end
36
46
  end
@@ -50,6 +50,10 @@ class Features::Downstream < ForemanMaintain::Feature
50
50
  execute!(%(subscription-manager refresh))
51
51
  end
52
52
 
53
+ def subscribed_using_activationkey?
54
+ ENV['EXTERNAL_SAT_ACTIVATION_KEY'] && ENV['EXTERNAL_SAT_ORG']
55
+ end
56
+
53
57
  private
54
58
 
55
59
  def rh_repos(sat_version)
@@ -76,6 +80,13 @@ class Features::Downstream < ForemanMaintain::Feature
76
80
  sat_tools_repo_id = "rhel-#{rh_version_major}-server-satellite-tools-#{sat_version_full}-rpms"
77
81
  sat_maintenance_repo_id = "rhel-#{rh_version_major}-server-satellite-maintenance-6-rpms"
78
82
 
83
+ # Override to use Beta repositories for sat version until GA
84
+ if sat_version.to_s == '6.5'
85
+ sat_repo_id = "rhel-server-#{rh_version_major}-satellite-6-beta-rpms"
86
+ sat_tools_repo_id = "rhel-#{rh_version_major}-server-satellite-tools-6-beta-rpms"
87
+ sat_maintenance_repo_id = "rhel-#{rh_version_major}-server-satellite-maintenance-6-beta-rpms"
88
+ end
89
+
79
90
  [sat_repo_id, sat_tools_repo_id, sat_maintenance_repo_id]
80
91
  end
81
92
 
@@ -0,0 +1,79 @@
1
+ module Scenarios::Satellite_6_5
2
+ class Abstract < ForemanMaintain::Scenario
3
+ def self.upgrade_metadata(&block)
4
+ metadata do
5
+ tags :upgrade_to_satellite_6_5
6
+ confine do
7
+ feature(:downstream) && feature(:downstream).current_minor_version == '6.4'
8
+ end
9
+ instance_eval(&block)
10
+ end
11
+ end
12
+ end
13
+
14
+ class PreUpgradeCheck < Abstract
15
+ upgrade_metadata do
16
+ description 'Checks before upgrading to Satellite 6.5'
17
+ tags :pre_upgrade_checks
18
+ run_strategy :fail_slow
19
+ end
20
+
21
+ def compose
22
+ add_steps(find_checks(:default))
23
+ add_steps(find_checks(:pre_upgrade))
24
+ add_step(Checks::Repositories::Validate.new(:version => '6.5'))
25
+ end
26
+ end
27
+
28
+ class PreMigrations < Abstract
29
+ upgrade_metadata do
30
+ description 'Procedures before migrating to Satellite 6.5'
31
+ tags :pre_migrations
32
+ end
33
+
34
+ def compose
35
+ add_steps(find_procedures(:pre_migrations))
36
+ add_step(Procedures::Service::Stop.new)
37
+ end
38
+ end
39
+
40
+ class Migrations < Abstract
41
+ upgrade_metadata do
42
+ description 'Migration scripts to Satellite 6.5'
43
+ tags :migrations
44
+ end
45
+
46
+ def compose
47
+ add_step(Procedures::Repositories::Setup.new(:version => '6.5'))
48
+ add_step(Procedures::Packages::Update.new(:assumeyes => true))
49
+ add_step(Procedures::Installer::Upgrade.new)
50
+ end
51
+ end
52
+
53
+ class PostMigrations < Abstract
54
+ upgrade_metadata do
55
+ description 'Procedures after migrating to Satellite 6.5'
56
+ tags :post_migrations
57
+ end
58
+
59
+ def compose
60
+ add_step(Procedures::Service::Start.new)
61
+ add_steps(find_procedures(:post_migrations))
62
+ end
63
+ end
64
+
65
+ class PostUpgradeChecks < Abstract
66
+ upgrade_metadata do
67
+ description 'Checks after upgrading to Satellite 6.5'
68
+ tags :post_upgrade_checks
69
+ run_strategy :fail_slow
70
+ end
71
+
72
+ def compose
73
+ add_steps(find_checks(:default))
74
+ add_steps(find_checks(:post_upgrade))
75
+ end
76
+ end
77
+ end
78
+
79
+ ForemanMaintain::UpgradeRunner.register_version('6.5', :upgrade_to_satellite_6_5)
@@ -0,0 +1,79 @@
1
+ module Scenarios::Satellite_6_5_z
2
+ class Abstract < ForemanMaintain::Scenario
3
+ def self.upgrade_metadata(&block)
4
+ metadata do
5
+ tags :upgrade_to_satellite_6_5_z
6
+ confine do
7
+ feature(:downstream) && feature(:downstream).current_minor_version == '6.5'
8
+ end
9
+ instance_eval(&block)
10
+ end
11
+ end
12
+ end
13
+
14
+ class PreUpgradeCheck < Abstract
15
+ upgrade_metadata do
16
+ description 'Checks before upgrading to Satellite 6.5.z'
17
+ tags :pre_upgrade_checks
18
+ run_strategy :fail_slow
19
+ end
20
+
21
+ def compose
22
+ add_steps(find_checks(:default))
23
+ add_steps(find_checks(:pre_upgrade))
24
+ add_step(Checks::Repositories::Validate.new(:version => '6.5'))
25
+ end
26
+ end
27
+
28
+ class PreMigrations < Abstract
29
+ upgrade_metadata do
30
+ description 'Procedures before migrating to Satellite 6.5.z'
31
+ tags :pre_migrations
32
+ end
33
+
34
+ def compose
35
+ add_steps(find_procedures(:pre_migrations))
36
+ add_step(Procedures::Service::Stop.new)
37
+ end
38
+ end
39
+
40
+ class Migrations < Abstract
41
+ upgrade_metadata do
42
+ description 'Migration scripts to Satellite 6.5.z'
43
+ tags :migrations
44
+ end
45
+
46
+ def compose
47
+ add_step(Procedures::Repositories::Setup.new(:version => '6.5'))
48
+ add_step(Procedures::Packages::Update.new(:assumeyes => true))
49
+ add_step(Procedures::Installer::Upgrade.new)
50
+ end
51
+ end
52
+
53
+ class PostMigrations < Abstract
54
+ upgrade_metadata do
55
+ description 'Procedures after migrating to Satellite 6.5.z'
56
+ tags :post_migrations
57
+ end
58
+
59
+ def compose
60
+ add_step(Procedures::Service::Start.new)
61
+ add_steps(find_procedures(:post_migrations))
62
+ end
63
+ end
64
+
65
+ class PostUpgradeChecks < Abstract
66
+ upgrade_metadata do
67
+ description 'Checks after upgrading to Satellite 6.5.z'
68
+ tags :post_upgrade_checks
69
+ run_strategy :fail_slow
70
+ end
71
+
72
+ def compose
73
+ add_steps(find_checks(:default))
74
+ add_steps(find_checks(:post_upgrade))
75
+ end
76
+ end
77
+ end
78
+
79
+ ForemanMaintain::UpgradeRunner.register_version('6.5.z', :upgrade_to_satellite_6_5_z)
@@ -33,9 +33,14 @@ module ForemanMaintain
33
33
  end
34
34
 
35
35
  def check_min_version(name, minimal_version)
36
- current_version = package_version(name)
37
- if current_version
38
- return current_version >= version(minimal_version)
36
+ check_version(name) do |current_version|
37
+ current_version >= version(minimal_version)
38
+ end
39
+ end
40
+
41
+ def check_max_version(name, maximal_version)
42
+ check_version(name) do |current_version|
43
+ version(maximal_version) >= current_version
39
44
  end
40
45
  end
41
46
 
@@ -179,6 +184,15 @@ module ForemanMaintain
179
184
  end
180
185
  result
181
186
  end
187
+
188
+ private
189
+
190
+ def check_version(name)
191
+ current_version = package_version(name)
192
+ if current_version
193
+ yield current_version
194
+ end
195
+ end
182
196
  end
183
197
  end
184
198
  end
@@ -18,6 +18,10 @@ module ForemanMaintain
18
18
  @unit ||= 'MB/sec'
19
19
  end
20
20
 
21
+ def available_space
22
+ convert_kb_to_mb(execute!("df #{dir}|awk {'print $4'}|tail -1").to_i)
23
+ end
24
+
21
25
  private
22
26
 
23
27
  # In fio command, --direct option bypass the cache page
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '0.2.12'.freeze
2
+ VERSION = '0.3.0'.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.2.12
4
+ version: 0.3.0
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: 2018-10-18 00:00:00.000000000 Z
11
+ date: 2018-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -123,8 +123,10 @@ files:
123
123
  - definitions/checks/candlepin/db_up.rb
124
124
  - definitions/checks/candlepin/validate_db.rb
125
125
  - definitions/checks/check_epel_repository.rb
126
+ - definitions/checks/disk/available_space.rb
126
127
  - definitions/checks/disk/performance.rb
127
128
  - definitions/checks/foreman/db_up.rb
129
+ - definitions/checks/foreman/puppet_class_duplicates.rb
128
130
  - definitions/checks/foreman_openscap/invalid_report_associations.rb
129
131
  - definitions/checks/foreman_proxy/verify_dhcp_config_syntax.rb
130
132
  - definitions/checks/foreman_tasks/invalid/check_old.rb
@@ -237,6 +239,8 @@ files:
237
239
  - definitions/scenarios/upgrade_to_satellite_6_3_z.rb
238
240
  - definitions/scenarios/upgrade_to_satellite_6_4.rb
239
241
  - definitions/scenarios/upgrade_to_satellite_6_4_z.rb
242
+ - definitions/scenarios/upgrade_to_satellite_6_5.rb
243
+ - definitions/scenarios/upgrade_to_satellite_6_5_z.rb
240
244
  - lib/foreman_maintain.rb
241
245
  - lib/foreman_maintain/check.rb
242
246
  - lib/foreman_maintain/cli.rb
@@ -322,7 +326,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
322
326
  version: '0'
323
327
  requirements: []
324
328
  rubyforge_project:
325
- rubygems_version: 2.6.12
329
+ rubygems_version: 2.7.3
326
330
  signing_key:
327
331
  specification_version: 4
328
332
  summary: Foreman maintenance tool belt