foreman_maintain 0.2.12 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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