foreman_maintain 0.3.0 → 0.3.1

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
- SHA256:
3
- metadata.gz: 582123528806343d919cd45a9503596cd5edb30144742aa579f65a7c65eaa5a4
4
- data.tar.gz: 2735882675a774b98aeb7d41c361bdee8707bf2c25235f420b3cb6cd49e2df7e
2
+ SHA1:
3
+ metadata.gz: 0fce23af3f0916264faaf404caa0164321bcb17d
4
+ data.tar.gz: f65633719449de4778bdc7d5eb6e328ad4b130d3
5
5
  SHA512:
6
- metadata.gz: 02b5862caf25490bcfa6e8aebcae31ada850eee4492381400255cf9de651ca1e862d5a564b9178c7f239226d2c9ddca0cfb200880d112e2939db97b8ac28ca41
7
- data.tar.gz: 7fa363c783df0e07e8cec7dd086001e8e082f156c6e512766579484f16ca69d014b2944a320faae65747f7695a83e81c347def707a122335819546ae254f0b8f
6
+ metadata.gz: 11b1ad761ebc5e73f2c4d211246f68825b1cf698b3d2ab7c8f60603d63005e57c0044b38b16ed9489b3ec8ae93bc5f79a4ece069e73760d600debe4ee37c8481
7
+ data.tar.gz: 7fb92a17ea9e84cbc480844887580128887f915bdee78e88543581bc611c7fe5253694d26abed0363f082314e5e6686e7d7d079fbe3d5344a24ec2b9a3aedf2a
@@ -30,6 +30,10 @@ class Features::Mongo < ForemanMaintain::Feature
30
30
  end
31
31
 
32
32
  def initialize
33
+ reload_db_config
34
+ end
35
+
36
+ def reload_db_config
33
37
  @configuration = load_db_config(config_file)
34
38
  end
35
39
 
@@ -14,6 +14,7 @@ module Procedures::Restore
14
14
  spinner.update('Restoring configs')
15
15
  clean_conflicting_data
16
16
  restore_configs(backup)
17
+ reload_configs
17
18
  end
18
19
  end
19
20
 
@@ -30,6 +31,10 @@ module Procedures::Restore
30
31
  feature(:tar).run(tar_options)
31
32
  end
32
33
 
34
+ def reload_configs
35
+ feature(:mongo).reload_db_config if feature(:mongo)
36
+ end
37
+
33
38
  private
34
39
 
35
40
  def clean_conflicting_data
@@ -0,0 +1,35 @@
1
+ module Procedures::Restore
2
+ class EnsureMongoEngineMatches < ForemanMaintain::Procedure
3
+ metadata do
4
+ description 'Ensure restored MongoDB storage engine matches the current DB'
5
+ for_feature :mongo
6
+ end
7
+
8
+ # rubocop:disable Metrics/AbcSize
9
+ def run
10
+ if feature(:mongo).local? && mongo_data_dir_exists? && engine_mismatch?
11
+ with_spinner('Clean MongoDB data') do |spinner|
12
+ feature(:service).handle_services(spinner, 'stop', :only => feature(:mongo).services)
13
+ spinner.update('Clean MongoDB data')
14
+ data_path = Dir[feature(:mongo).data_dir + '/*']
15
+ FileUtils.rm_rf(data_path)
16
+ FileUtils.rm_rf('/var/tmp/mongodb_engine_upgrade')
17
+ feature(:service).handle_services(spinner, 'start', :only => feature(:mongo).services)
18
+ end
19
+ end
20
+ end
21
+ # rubocop:enable Metrics/AbcSize
22
+
23
+ private
24
+
25
+ def engine_mismatch?
26
+ tiger_file = File.join(feature(:mongo).data_dir, 'WiredTiger.wt')
27
+ config_file = feature(:mongo).core.server_config_files.first
28
+ File.exist?(tiger_file) && File.open(config_file).grep(/^storage.engine:\s*mmapv1/).any?
29
+ end
30
+
31
+ def mongo_data_dir_exists?
32
+ File.directory?(feature(:mongo).data_dir)
33
+ end
34
+ end
35
+ end
@@ -2,19 +2,11 @@ module Procedures::Restore
2
2
  class InstallerReset < ForemanMaintain::Procedure
3
3
  metadata do
4
4
  description 'Run installer reset'
5
-
6
- param :incremental_backup,
7
- 'Is the backup incremental?'
8
5
  end
9
6
 
10
7
  def run
11
- with_spinner('Resetting') do |spinner|
12
- if @incremental_backup
13
- spinner.update('Skipping installer reset for incremental update')
14
- else
15
- spinner.update('Installer reset')
16
- execute!(installer_cmd)
17
- end
8
+ with_spinner('Installer reset') do
9
+ execute!(installer_cmd)
18
10
  end
19
11
  end
20
12
 
@@ -19,9 +19,12 @@ module ForemanMaintain::Scenarios
19
19
  Procedures::Restore::Confirmation,
20
20
  Checks::Restore::ValidateHostname,
21
21
  Procedures::Selinux::SetFileSecurity,
22
- Procedures::Restore::Configs,
23
- Procedures::Restore::InstallerReset,
24
- Procedures::Service::Stop)
22
+ Procedures::Restore::Configs)
23
+ unless backup.incremental?
24
+ add_steps_with_context(Procedures::Restore::EnsureMongoEngineMatches,
25
+ Procedures::Restore::InstallerReset)
26
+ end
27
+ add_step_with_context(Procedures::Service::Stop)
25
28
  add_steps_with_context(Procedures::Restore::ExtractFiles) if backup.tar_backups_exist?
26
29
  drop_dbs(backup)
27
30
  if backup.sql_dump_files_exist? && feature(:instance).postgresql_local?
@@ -84,8 +87,7 @@ module ForemanMaintain::Scenarios
84
87
  Procedures::Restore::MongoDump => :backup_dir)
85
88
 
86
89
  context.map(:incremental_backup,
87
- Procedures::Selinux::SetFileSecurity => :incremental_backup,
88
- Procedures::Restore::InstallerReset => :incremental_backup)
90
+ Procedures::Selinux::SetFileSecurity => :incremental_backup)
89
91
  end
90
92
  end
91
93
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '0.3.0'.freeze
2
+ VERSION = '0.3.1'.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.3.0
4
+ version: 0.3.1
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-11-08 00:00:00.000000000 Z
11
+ date: 2019-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -212,6 +212,7 @@ files:
212
212
  - definitions/procedures/restore/configs.rb
213
213
  - definitions/procedures/restore/confirmation.rb
214
214
  - definitions/procedures/restore/drop_databases.rb
215
+ - definitions/procedures/restore/ensure_mongo_engine_matches.rb
215
216
  - definitions/procedures/restore/extract_files.rb
216
217
  - definitions/procedures/restore/foreman_dump.rb
217
218
  - definitions/procedures/restore/installer_reset.rb
@@ -326,7 +327,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
326
327
  version: '0'
327
328
  requirements: []
328
329
  rubyforge_project:
329
- rubygems_version: 2.7.3
330
+ rubygems_version: 2.6.12
330
331
  signing_key:
331
332
  specification_version: 4
332
333
  summary: Foreman maintenance tool belt