foreman_maintain 1.5.1 → 1.6.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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -20
  3. data/definitions/checks/disk/available_space_candlepin.rb +1 -1
  4. data/definitions/checks/disk/available_space_postgresql13.rb +42 -0
  5. data/definitions/checks/foreman/check_corrupted_roles.rb +0 -3
  6. data/definitions/checks/foreman/validate_external_db_version.rb +1 -2
  7. data/definitions/features/foreman_proxy.rb +1 -5
  8. data/definitions/features/foreman_tasks.rb +2 -6
  9. data/definitions/features/installer.rb +0 -4
  10. data/definitions/features/pulpcore_database.rb +1 -1
  11. data/definitions/procedures/backup/offline/candlepin_db.rb +1 -6
  12. data/definitions/procedures/backup/offline/foreman_db.rb +1 -8
  13. data/definitions/procedures/backup/offline/pulpcore_db.rb +1 -6
  14. data/definitions/procedures/backup/pulp.rb +1 -10
  15. data/definitions/procedures/foreman/fix_corrupted_roles.rb +0 -3
  16. data/definitions/procedures/puppet/remove_puppet.rb +1 -2
  17. data/definitions/procedures/restore/installer_reset.rb +1 -17
  18. data/definitions/scenarios/backup.rb +5 -88
  19. data/definitions/scenarios/packages.rb +2 -2
  20. data/definitions/scenarios/puppet.rb +4 -6
  21. data/definitions/scenarios/restore.rb +1 -1
  22. data/definitions/scenarios/upgrade_to_capsule_6_16.rb +7 -4
  23. data/definitions/scenarios/upgrade_to_capsule_6_16_z.rb +6 -4
  24. data/definitions/scenarios/upgrade_to_foreman_nightly.rb +3 -3
  25. data/definitions/scenarios/upgrade_to_katello_nightly.rb +6 -4
  26. data/definitions/scenarios/upgrade_to_satellite_6_16.rb +7 -4
  27. data/definitions/scenarios/upgrade_to_satellite_6_16_z.rb +6 -4
  28. data/lib/foreman_maintain/cli/backup_command.rb +0 -27
  29. data/lib/foreman_maintain/cli.rb +2 -0
  30. data/lib/foreman_maintain/concerns/base_database.rb +0 -4
  31. data/lib/foreman_maintain/concerns/downstream.rb +0 -4
  32. data/lib/foreman_maintain/concerns/os_facts.rb +4 -0
  33. data/lib/foreman_maintain/concerns/system_helpers.rb +0 -12
  34. data/lib/foreman_maintain/version.rb +1 -1
  35. data/lib/foreman_maintain.rb +1 -1
  36. metadata +3 -15
  37. data/definitions/checks/disk/available_space_postgresql12.rb +0 -46
  38. data/definitions/procedures/backup/snapshot/clean_mount.rb +0 -24
  39. data/definitions/procedures/backup/snapshot/logical_volume_confirmation.rb +0 -56
  40. data/definitions/procedures/backup/snapshot/mount_base.rb +0 -27
  41. data/definitions/procedures/backup/snapshot/mount_candlepin_db.rb +0 -48
  42. data/definitions/procedures/backup/snapshot/mount_foreman_db.rb +0 -48
  43. data/definitions/procedures/backup/snapshot/mount_pulp.rb +0 -32
  44. data/definitions/procedures/backup/snapshot/mount_pulpcore_db.rb +0 -48
  45. data/definitions/procedures/backup/snapshot/prepare_mount.rb +0 -16
  46. data/definitions/procedures/backup/snapshot/snapshot_deprecation_message.rb +0 -14
  47. data/definitions/procedures/foreman/remove_duplicate_obsolete_roles.rb +0 -64
  48. data/definitions/procedures/installer/run_for_6_11.rb +0 -52
  49. data/definitions/procedures/installer/upgrade.rb +0 -12
@@ -47,20 +47,22 @@ module Scenarios::Katello_Nightly
47
47
  end
48
48
 
49
49
  def set_context_mapping
50
- context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
50
+ context.map(:assumeyes, Procedures::Installer::Run => :assumeyes)
51
51
  end
52
52
 
53
53
  def compose
54
54
  add_step(Procedures::Repositories::Setup.new(:version => 'nightly'))
55
- modules_to_enable = ["katello:#{el_short_name}", "pulpcore:#{el_short_name}"]
56
- add_step(Procedures::Packages::EnableModules.new(:module_names => modules_to_enable))
55
+ if el8?
56
+ modules_to_enable = ["katello:#{el_short_name}", "pulpcore:#{el_short_name}"]
57
+ add_step(Procedures::Packages::EnableModules.new(:module_names => modules_to_enable))
58
+ end
57
59
  add_step(Procedures::Packages::Update.new(
58
60
  :assumeyes => true,
59
61
  :dnf_options => ['--downloadonly']
60
62
  ))
61
63
  add_step(Procedures::Service::Stop.new)
62
64
  add_step(Procedures::Packages::Update.new(:assumeyes => true, :clean_cache => false))
63
- add_step_with_context(Procedures::Installer::Upgrade)
65
+ add_step_with_context(Procedures::Installer::Run)
64
66
  end
65
67
  end
66
68
 
@@ -27,6 +27,7 @@ module Scenarios::Satellite_6_16
27
27
  def compose
28
28
  add_steps(find_checks(:default))
29
29
  add_steps(find_checks(:pre_upgrade))
30
+ add_step(Checks::Disk::AvailableSpacePostgresql13)
30
31
  add_step(Checks::Repositories::Validate.new(:version => '6.16'))
31
32
  end
32
33
  end
@@ -39,8 +40,10 @@ module Scenarios::Satellite_6_16
39
40
 
40
41
  def compose
41
42
  add_step(Procedures::Repositories::Setup.new(:version => '6.16'))
42
- modules_to_enable = ["satellite:#{el_short_name}"]
43
- add_step(Procedures::Packages::EnableModules.new(:module_names => modules_to_enable))
43
+ if el8?
44
+ modules_to_enable = ["satellite:#{el_short_name}"]
45
+ add_step(Procedures::Packages::EnableModules.new(:module_names => modules_to_enable))
46
+ end
44
47
  add_step(Procedures::Packages::Update.new(
45
48
  :assumeyes => true,
46
49
  :dnf_options => ['--downloadonly']
@@ -57,13 +60,13 @@ module Scenarios::Satellite_6_16
57
60
  end
58
61
 
59
62
  def set_context_mapping
60
- context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
63
+ context.map(:assumeyes, Procedures::Installer::Run => :assumeyes)
61
64
  end
62
65
 
63
66
  def compose
64
67
  add_step(Procedures::Service::Stop.new)
65
68
  add_step(Procedures::Packages::Update.new(:assumeyes => true, :clean_cache => false))
66
- add_step_with_context(Procedures::Installer::Upgrade)
69
+ add_step_with_context(Procedures::Installer::Run)
67
70
  add_step(Procedures::Installer::UpgradeRakeTask)
68
71
  end
69
72
  end
@@ -39,8 +39,10 @@ module Scenarios::Satellite_6_16_z
39
39
 
40
40
  def compose
41
41
  add_step(Procedures::Repositories::Setup.new(:version => '6.16'))
42
- modules_to_enable = ["satellite:#{el_short_name}"]
43
- add_step(Procedures::Packages::EnableModules.new(:module_names => modules_to_enable))
42
+ if el8?
43
+ modules_to_enable = ["satellite:#{el_short_name}"]
44
+ add_step(Procedures::Packages::EnableModules.new(:module_names => modules_to_enable))
45
+ end
44
46
  add_step(Procedures::Packages::Update.new(
45
47
  :assumeyes => true,
46
48
  :dnf_options => ['--downloadonly']
@@ -56,13 +58,13 @@ module Scenarios::Satellite_6_16_z
56
58
  end
57
59
 
58
60
  def set_context_mapping
59
- context.map(:assumeyes, Procedures::Installer::Upgrade => :assumeyes)
61
+ context.map(:assumeyes, Procedures::Installer::Run => :assumeyes)
60
62
  end
61
63
 
62
64
  def compose
63
65
  add_step(Procedures::Service::Stop.new)
64
66
  add_step(Procedures::Packages::Update.new(:assumeyes => true, :clean_cache => false))
65
- add_step_with_context(Procedures::Installer::Upgrade)
67
+ add_step_with_context(Procedures::Installer::Run)
66
68
  add_step(Procedures::Installer::UpgradeRakeTask)
67
69
  end
68
70
  end
@@ -127,36 +127,9 @@ module ForemanMaintain
127
127
  end
128
128
  end
129
129
 
130
- class SnapshotBackupCommand < Base
131
- include BackupCommon
132
- interactive_option
133
- common_backup_options
134
- option '--include-db-dumps', :flag, 'Also dump full database schema before snapshot backup'
135
- option ['-d', '--snapshot-mount-dir'], 'SNAPSHOT_MOUNT_DIR',
136
- "Override default directory ('/var/snap/') where the snapshots will be mounted",
137
- :default => '/var/snap/' do |dir|
138
- unless File.directory?(dir)
139
- raise ArgumentError, "Snapshot mount directory does not exist: #{dir}"
140
- end
141
- dir
142
- end
143
- option ['-b', '--snapshot-block-size'], 'SNAPSHOT_BLOCK_SIZE',
144
- 'Override default block size (2G)', :default => '2G'
145
-
146
- def execute
147
- perform_backup(:snapshot,
148
- :snapshot_mount_dir => snapshot_mount_dir,
149
- :snapshot_block_size => snapshot_block_size,
150
- :include_db_dumps => include_db_dumps?)
151
- end
152
- end
153
-
154
- # rubocop:disable Metrics/LineLength
155
130
  class BackupCommand < Base
156
131
  subcommand 'online', 'Keep services online during backup', OnlineBackupCommand
157
132
  subcommand 'offline', 'Shut down services to preserve consistent backup', OfflineBackupCommand
158
- subcommand 'snapshot', 'Use snapshots of the databases to create backup (DEPRECATED)', SnapshotBackupCommand
159
133
  end
160
- # rubocop:enable Metrics/LineLength
161
134
  end
162
135
  end
@@ -13,6 +13,8 @@ require 'foreman_maintain/cli/packages_command'
13
13
  require 'foreman_maintain/cli/plugin_command'
14
14
  require 'foreman_maintain/cli/self_upgrade_command'
15
15
 
16
+ Clamp.allow_options_after_parameters = true
17
+
16
18
  module ForemanMaintain
17
19
  module Cli
18
20
  class MainCommand < Base
@@ -115,10 +115,6 @@ module ForemanMaintain
115
115
  @backup_dir ||= File.expand_path(ForemanMaintain.config.db_backup_dir)
116
116
  end
117
117
 
118
- def find_base_directory(directory)
119
- find_dir_containing_file(directory, 'postgresql.conf')
120
- end
121
-
122
118
  def dropdb(config = configuration)
123
119
  if local?
124
120
  execute!("runuser - postgres -c 'dropdb #{config['database']}'")
@@ -56,10 +56,6 @@ module ForemanMaintain
56
56
  rh_repos
57
57
  end
58
58
 
59
- def use_beta_repos?
60
- ENV['FOREMAN_MAINTAIN_USE_BETA'] == '1'
61
- end
62
-
63
59
  def product_specific_repos(full_version)
64
60
  repos = ["#{package_name}-#{full_version}-for-rhel-#{el_major_version}-x86_64-rpms"]
65
61
  repos.concat(common_repos(full_version))
@@ -54,6 +54,10 @@ module ForemanMaintain
54
54
  File.exist?('/etc/redhat-release')
55
55
  end
56
56
 
57
+ def el8?
58
+ el_major_version == 8
59
+ end
60
+
57
61
  def debian?
58
62
  os_id == 'debian'
59
63
  end
@@ -163,18 +163,6 @@ module ForemanMaintain
163
163
  Dir.entries(dir).size <= 2
164
164
  end
165
165
 
166
- def get_lv_info(dir)
167
- execute("findmnt -n --target #{dir} -o SOURCE,FSTYPE").split
168
- end
169
-
170
- def create_lv_snapshot(name, block_size, path)
171
- execute!("lvcreate -n#{name} -L#{block_size} -s #{path}")
172
- end
173
-
174
- def get_lv_path(lv_name)
175
- execute("lvs --noheadings -o lv_path -S lv_name=#{lv_name}").strip
176
- end
177
-
178
166
  def find_dir_containing_file(directory, target)
179
167
  result = nil
180
168
  Find.find(directory) do |path|
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '1.5.1'.freeze
2
+ VERSION = '1.6.0'.freeze
3
3
  end
@@ -193,7 +193,7 @@ module ForemanMaintain
193
193
  end
194
194
 
195
195
  def enable_maintenance_module
196
- return unless el?
196
+ return unless el8?
197
197
 
198
198
  maintenance_module = 'satellite-maintenance:el8'
199
199
  package_manager = ForemanMaintain.package_manager
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: 1.5.1
4
+ version: 1.6.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: 2024-02-16 00:00:00.000000000 Z
11
+ date: 2024-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -163,7 +163,7 @@ files:
163
163
  - definitions/checks/check_tmout.rb
164
164
  - definitions/checks/disk/available_space.rb
165
165
  - definitions/checks/disk/available_space_candlepin.rb
166
- - definitions/checks/disk/available_space_postgresql12.rb
166
+ - definitions/checks/disk/available_space_postgresql13.rb
167
167
  - definitions/checks/disk/performance.rb
168
168
  - definitions/checks/env_proxy.rb
169
169
  - definitions/checks/foreman/check_corrupted_roles.rb
@@ -242,20 +242,10 @@ files:
242
242
  - definitions/procedures/backup/online/safety_confirmation.rb
243
243
  - definitions/procedures/backup/prepare_directory.rb
244
244
  - definitions/procedures/backup/pulp.rb
245
- - definitions/procedures/backup/snapshot/clean_mount.rb
246
- - definitions/procedures/backup/snapshot/logical_volume_confirmation.rb
247
- - definitions/procedures/backup/snapshot/mount_base.rb
248
- - definitions/procedures/backup/snapshot/mount_candlepin_db.rb
249
- - definitions/procedures/backup/snapshot/mount_foreman_db.rb
250
- - definitions/procedures/backup/snapshot/mount_pulp.rb
251
- - definitions/procedures/backup/snapshot/mount_pulpcore_db.rb
252
- - definitions/procedures/backup/snapshot/prepare_mount.rb
253
- - definitions/procedures/backup/snapshot/snapshot_deprecation_message.rb
254
245
  - definitions/procedures/crond/start.rb
255
246
  - definitions/procedures/crond/stop.rb
256
247
  - definitions/procedures/files/remove.rb
257
248
  - definitions/procedures/foreman/fix_corrupted_roles.rb
258
- - definitions/procedures/foreman/remove_duplicate_obsolete_roles.rb
259
249
  - definitions/procedures/foreman/remove_duplicate_permissions.rb
260
250
  - definitions/procedures/foreman_maintain_features.rb
261
251
  - definitions/procedures/foreman_openscap/invalid_report_associations.rb
@@ -266,8 +256,6 @@ files:
266
256
  - definitions/procedures/foreman_tasks/ui_investigate.rb
267
257
  - definitions/procedures/hammer_setup.rb
268
258
  - definitions/procedures/installer/run.rb
269
- - definitions/procedures/installer/run_for_6_11.rb
270
- - definitions/procedures/installer/upgrade.rb
271
259
  - definitions/procedures/installer/upgrade_rake_task.rb
272
260
  - definitions/procedures/knowledge_base_article.rb
273
261
  - definitions/procedures/maintenance_mode/disable_maintenance_mode.rb
@@ -1,46 +0,0 @@
1
- module Checks
2
- module Disk
3
- class AvailableSpacePostgresql12 < ForemanMaintain::Check
4
- metadata do
5
- label :available_space_for_postgresql12
6
- description 'Check to make sure PostgreSQL 12 work directory has enough space for upgrade'
7
- confine do
8
- (feature(:foreman_database) || feature(:candlepin_database)) && \
9
- (file_exists?('/var/lib/pgsql') && \
10
- file_exists?('/var/opt/rh/rh-postgresql12'))
11
- end
12
- end
13
-
14
- def run
15
- assert(psql_12_available_space >= psql_9_consumed_space, warning_message, :warn => true)
16
- end
17
-
18
- def pgsql_dir(version)
19
- case version
20
- when 9
21
- '/var/lib/pgsql/'
22
- when 12
23
- '/var/opt/rh/rh-postgresql12/'
24
- end
25
- end
26
-
27
- def psql_9_consumed_space
28
- io_obj = ForemanMaintain::Utils::Disk::IODevice.new(pgsql_dir(9))
29
- io_obj.space_used
30
- end
31
-
32
- def psql_12_available_space
33
- io_obj = ForemanMaintain::Utils::Disk::IODevice.new(pgsql_dir(12))
34
- io_obj.available_space
35
- end
36
-
37
- def warning_message
38
- sat_version = feature(:satellite).current_version.version[0..2]
39
- "Satellite #{sat_version} uses PostgreSQL 12. \nThis changes PostgreSQL "\
40
- "work directory to #{pgsql_dir(12)}\n"\
41
- "The new work directory requires at least #{psql_9_consumed_space}"\
42
- 'MiB free space for upgrade!'
43
- end
44
- end
45
- end
46
- end
@@ -1,24 +0,0 @@
1
- module Procedures::Backup
2
- module Snapshot
3
- class CleanMount < ForemanMaintain::Procedure
4
- metadata do
5
- description 'Remove the snapshot mount points'
6
- tags :backup
7
- param :mount_dir, 'Snapshot mount directory', :required => true
8
- end
9
-
10
- def run
11
- %w[pulp pgsql].each do |database|
12
- mount_point = File.join(@mount_dir, database)
13
-
14
- if File.exist?(mount_point) && !execute("mount|grep #{mount_point}").empty?
15
- execute("umount #{mount_point}")
16
- end
17
-
18
- snapshot_location = get_lv_path("#{database}-snap")
19
- execute("lvremove #{snapshot_location} -f") unless snapshot_location.empty?
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,56 +0,0 @@
1
- module Procedures::Backup
2
- module Snapshot
3
- class LogicalVolumeConfirmation < ForemanMaintain::Procedure
4
- metadata do
5
- description 'Check if backup is on different logical volume then the source'
6
- tags :backup
7
- param :backup_dir, 'Directory where to backup to', :required => true
8
- param :skip_pulp, 'Skip Pulp content during backup'
9
- end
10
-
11
- def run
12
- backup_lv = get_lv_info(@backup_dir)
13
- shared_lv = dbs.inject([]) do |list, (db_label, db_name)|
14
- db_lv = get_lv_info(feature(db_label).data_dir)
15
- list << db_name if db_lv == backup_lv
16
- list
17
- end
18
-
19
- pulp_data_lv = get_lv_info(current_pulp_feature.pulp_data_dir)
20
- shared_lv << 'Pulp' if pulp_data_lv == backup_lv && !@skip_pulp
21
-
22
- confirm(shared_lv) if shared_lv.any?
23
- end
24
-
25
- def current_pulp_feature
26
- feature(:pulpcore_database)
27
- end
28
-
29
- def dbs
30
- dbs = {}
31
- dbs[:candlepin_database] = 'Candlepin' if db_local?(:candlepin_database)
32
- dbs[:foreman_database] = 'Foreman' if db_local?(:foreman_database)
33
- dbs[:pulpcore_database] = 'Pulpcore' if db_local?(:pulpcore_database)
34
- dbs
35
- end
36
-
37
- private
38
-
39
- def db_local?(db)
40
- feature(:instance).database_local?(db)
41
- end
42
-
43
- def confirm(shared_lv)
44
- answer = ask_decision('*** WARNING: The chosen backup location is mounted on the same' \
45
- " logical volume as the location of #{shared_lv.join(', ')}.\n" \
46
- '*** It is highly suggested to backup to a different logical volume than' \
47
- " the #{shared_lv.join(', ')} database.\n" \
48
- '*** If you would like to continue, the snapshot size will be required to be at least' \
49
- " the size of the actual #{shared_lv.join(', ')} database.\n" \
50
- "*** You can skip this confirmation with the '-y' flag.\n\n" \
51
- 'Do you want to proceed?', actions_msg: 'y(yes), q(quit)')
52
- abort! unless answer == :yes
53
- end
54
- end
55
- end
56
- end
@@ -1,27 +0,0 @@
1
- module Procedures::Backup
2
- module Snapshot
3
- class MountBase < ForemanMaintain::Procedure
4
- metadata do
5
- advanced_run false
6
- end
7
-
8
- def self.common_params(context)
9
- context.instance_eval do
10
- param :mount_dir, 'Snapshot mount directory', :required => true
11
- param :block_size, 'Snapshot block size', :default => '2G'
12
- end
13
- end
14
-
15
- def mount_snapshot(database, lv_type)
16
- FileUtils.mkdir_p(mount_location(database))
17
- options = (lv_type == 'xfs') ? '-onouuid,ro' : '-oro'
18
- lv_name = "#{database}-snap"
19
- execute!("mount #{get_lv_path(lv_name)} #{mount_location(database)} #{options}")
20
- end
21
-
22
- def mount_location(database)
23
- File.join(@mount_dir, database)
24
- end
25
- end
26
- end
27
- end
@@ -1,48 +0,0 @@
1
- require 'procedures/backup/snapshot/mount_base'
2
- module Procedures::Backup
3
- module Snapshot
4
- class MountCandlepinDB < MountBase
5
- metadata do
6
- description 'Create and mount snapshot of Candlepin DB'
7
- tags :backup
8
- label :backup_snapshot_mount_candlepin_db
9
- for_feature :candlepin_database
10
- preparation_steps { Checks::Candlepin::DBUp.new unless feature(:candlepin_database).local? }
11
- MountBase.common_params(self)
12
- param :backup_dir, 'Directory where to backup to'
13
- end
14
-
15
- def run
16
- if feature(:candlepin_database).local?
17
- snapshot
18
- else
19
- dump_candlepin
20
- end
21
- end
22
-
23
- private
24
-
25
- def dump_candlepin
26
- puts 'LV snapshots are not supported for remote databases. Doing postgres dump instead... '
27
- with_spinner('Getting Candlepin DB dump') do
28
- feature(:candlepin_database).dump_db(File.join(@backup_dir, 'candlepin.dump'))
29
- end
30
- end
31
-
32
- def snapshot
33
- mount_point = mount_location('pgsql')
34
- FileUtils.mkdir_p(mount_point) unless File.directory?(mount_point)
35
- if directory_empty?(mount_point)
36
- with_spinner('Creating snapshot of Postgres') do |spinner|
37
- lv_info = get_lv_info(feature(:candlepin_database).data_dir)
38
- create_lv_snapshot('pgsql-snap', @block_size, lv_info[0])
39
- spinner.update("Mounting snapshot of Postgres on #{mount_point}")
40
- mount_snapshot('pgsql', lv_info[1])
41
- end
42
- else
43
- puts 'Snapshot of Postgres is already mounted'
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,48 +0,0 @@
1
- require 'procedures/backup/snapshot/mount_base'
2
- module Procedures::Backup
3
- module Snapshot
4
- class MountForemanDB < MountBase
5
- metadata do
6
- description 'Create and mount snapshot of Foreman DB'
7
- tags :backup
8
- label :backup_snapshot_mount_foreman_db
9
- for_feature :foreman_database
10
- preparation_steps { Checks::Foreman::DBUp.new unless feature(:foreman_database).local? }
11
- MountBase.common_params(self)
12
- param :backup_dir, 'Directory where to backup to'
13
- end
14
-
15
- def run
16
- if feature(:foreman_database).local?
17
- snapshot
18
- else
19
- dump_foreman
20
- end
21
- end
22
-
23
- private
24
-
25
- def dump_foreman
26
- puts 'LV snapshots are not supported for remote databases. Doing postgres dump instead... '
27
- with_spinner('Getting Foreman DB dump') do
28
- feature(:foreman_database).dump_db(File.join(@backup_dir, 'foreman.dump'))
29
- end
30
- end
31
-
32
- def snapshot
33
- mount_point = mount_location('pgsql')
34
- FileUtils.mkdir_p(mount_point) unless File.directory?(mount_point)
35
- if directory_empty?(mount_point)
36
- with_spinner('Creating snapshot of Postgres') do |spinner|
37
- lv_info = get_lv_info(feature(:foreman_database).data_dir)
38
- create_lv_snapshot('pgsql-snap', @block_size, lv_info[0])
39
- spinner.update("Mounting snapshot of Postgres on #{mount_point}")
40
- mount_snapshot('pgsql', lv_info[1])
41
- end
42
- else
43
- puts 'Snapshot of Postgres is already mounted'
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,32 +0,0 @@
1
- require 'procedures/backup/snapshot/mount_base'
2
- module Procedures::Backup
3
- module Snapshot
4
- class MountPulp < MountBase
5
- metadata do
6
- description 'Create and mount snapshot of Pulp data'
7
- tags :backup
8
- MountBase.common_params(self)
9
- param :skip, 'Skip Pulp content during backup'
10
- confine do
11
- feature(:pulpcore_database)
12
- end
13
- end
14
-
15
- def run
16
- skip if @skip
17
- with_spinner('Creating snapshot of Pulp') do |spinner|
18
- current_pulp_feature.with_marked_directory(current_pulp_feature.pulp_data_dir) do
19
- lv_info = get_lv_info(current_pulp_feature.pulp_data_dir)
20
- create_lv_snapshot('pulp-snap', @block_size, lv_info[0])
21
- spinner.update("Mounting snapshot of Pulp on #{mount_location('pulp')}")
22
- mount_snapshot('pulp', lv_info[1])
23
- end
24
- end
25
- end
26
-
27
- def current_pulp_feature
28
- feature(:pulpcore_database)
29
- end
30
- end
31
- end
32
- end
@@ -1,48 +0,0 @@
1
- require 'procedures/backup/snapshot/mount_base'
2
- module Procedures::Backup
3
- module Snapshot
4
- class MountPulpcoreDB < MountBase
5
- metadata do
6
- description 'Create and mount snapshot of Pulpcore DB'
7
- tags :backup
8
- label :backup_snapshot_mount_pulpcore_db
9
- for_feature :pulpcore_database
10
- preparation_steps { Checks::Pulpcore::DBUp.new unless feature(:pulpcore_database).local? }
11
- MountBase.common_params(self)
12
- param :backup_dir, 'Directory where to backup to'
13
- end
14
-
15
- def run
16
- if feature(:pulpcore_database).local?
17
- snapshot
18
- else
19
- dump_pulpcore
20
- end
21
- end
22
-
23
- private
24
-
25
- def dump_pulpcore
26
- puts 'LV snapshots are not supported for remote databases. Doing postgres dump instead... '
27
- with_spinner('Getting Pulpcore DB dump') do
28
- feature(:pulpcore_database).dump_db(File.join(@backup_dir, 'pulpcore.dump'))
29
- end
30
- end
31
-
32
- def snapshot
33
- mount_point = mount_location('pgsql')
34
- FileUtils.mkdir_p(mount_point) unless File.directory?(mount_point)
35
- if directory_empty?(mount_point)
36
- with_spinner('Creating snapshot of Postgres') do |spinner|
37
- lv_info = get_lv_info(feature(:pulpcore_database).data_dir)
38
- create_lv_snapshot('pgsql-snap', @block_size, lv_info[0])
39
- spinner.update("Mounting snapshot of Postgres on #{mount_point}")
40
- mount_snapshot('pgsql', lv_info[1])
41
- end
42
- else
43
- puts 'Snapshot of Postgres is already mounted'
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,16 +0,0 @@
1
- module Procedures::Backup
2
- module Snapshot
3
- class PrepareMount < ForemanMaintain::Procedure
4
- metadata do
5
- description 'Prepare mount point for the snapshot'
6
- tags :backup
7
- param :mount_dir, 'Snapshot mount directory', :required => true
8
- end
9
-
10
- def run
11
- logger.debug("Creating snap dir: #{@mount_dir}")
12
- FileUtils.mkdir_p @mount_dir
13
- end
14
- end
15
- end
16
- end
@@ -1,14 +0,0 @@
1
- module Procedures::Backup
2
- module Snapshot
3
- class SnapshotDeprecationMessage < ForemanMaintain::Procedure
4
- metadata do
5
- description 'Snapshot backups are deprecated'
6
- tags :backup
7
- end
8
-
9
- def run
10
- set_warn('Snapshot backups are deprecated and will be removed in a future version.')
11
- end
12
- end
13
- end
14
- end