foreman_maintain 0.8.23 → 0.8.26

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
2
  SHA256:
3
- metadata.gz: 99acc882c19945554772facce2ff0e3089de68ebcd0f7dab47ef4847ac849ea6
4
- data.tar.gz: 972b0f7a083e94a313bad7d702fbe599e3d5f68d235f464a3307c83c011f052e
3
+ metadata.gz: 07e94dcd8b177dfd099dba0073afd0f231cbe2fd4a1029b6576d587c5cb94f3a
4
+ data.tar.gz: ca3855c666713a17cc2fdb5d995fdfc15237e083a98978964cfd276b44d55e18
5
5
  SHA512:
6
- metadata.gz: 82314efa29ff8fabade9eecaf0e5dc6d9502287056b4d13a84109b11bbd5f351a4706de88c07840301e877db05cda9a69a4d7fc17ec7a806deed7a64cf34e5a9
7
- data.tar.gz: d011a14d5660a90ecc00598bec5a42c9741f6c1fad3091316e1232cd9ea0fe635c026319d2cb5df2adb5f1f5d5cc02d2e71e5d047ce6bca79b0097e2184c28ce
6
+ metadata.gz: 360bc155ca767b7ffd7c1ca17a8e9e669c4b2eb91ddc4148134c4f475af57888ee0938976d07dfaee48b2fa3ead2d8c6e2ab83c060330b42645fcaf9397697ae
7
+ data.tar.gz: 4b6df3189ca5ee87b6051995729a74e9641ac6866fa7bf6330285f5b59f5d29e92a25a332e718967125deddb9525d4ff119ff727b31f4e40ec55b7cf26db2805
@@ -82,15 +82,22 @@ class Features::ForemanTasks < ForemanMaintain::Feature
82
82
  def delete(state)
83
83
  tasks_condition = condition(state)
84
84
 
85
- feature(:foreman_database).psql(<<-SQL)
86
- BEGIN;
87
- DELETE FROM dynflow_steps USING foreman_tasks_tasks WHERE (foreman_tasks_tasks.external_id = dynflow_steps.execution_plan_uuid::varchar) AND #{tasks_condition};
88
- DELETE FROM dynflow_actions USING foreman_tasks_tasks WHERE (foreman_tasks_tasks.external_id = dynflow_actions.execution_plan_uuid::varchar) AND #{tasks_condition};
89
- DELETE FROM dynflow_execution_plans USING foreman_tasks_tasks WHERE (foreman_tasks_tasks.external_id = dynflow_execution_plans.uuid::varchar) AND #{tasks_condition};
90
- DELETE FROM foreman_tasks_tasks WHERE #{tasks_condition};
91
- COMMIT;
85
+ sql = <<-SQL
86
+ DELETE FROM dynflow_steps USING foreman_tasks_tasks WHERE (foreman_tasks_tasks.external_id = dynflow_steps.execution_plan_uuid::varchar) AND #{tasks_condition};
87
+ DELETE FROM dynflow_actions USING foreman_tasks_tasks WHERE (foreman_tasks_tasks.external_id = dynflow_actions.execution_plan_uuid::varchar) AND #{tasks_condition};
88
+ DELETE FROM dynflow_execution_plans USING foreman_tasks_tasks WHERE (foreman_tasks_tasks.external_id = dynflow_execution_plans.uuid::varchar) AND #{tasks_condition};
89
+ DELETE FROM foreman_tasks_tasks WHERE #{tasks_condition};
90
+ -- Delete locks and links which may now be orphaned
91
+ DELETE FROM foreman_tasks_locks as ftl where ftl.task_id NOT IN (SELECT id FROM foreman_tasks_tasks);
92
92
  SQL
93
93
 
94
+ if check_min_version(foreman_plugin_name('foreman-tasks'), '4.0.0')
95
+ sql += 'DELETE FROM foreman_tasks_links as ftl ' \
96
+ 'where ftl.task_id NOT IN (SELECT id FROM foreman_tasks_tasks);'
97
+ end
98
+
99
+ feature(:foreman_database).psql("BEGIN; #{sql}; COMMIT;")
100
+
94
101
  count(state)
95
102
  end
96
103
 
@@ -23,7 +23,15 @@ module Procedures::Pulp
23
23
  '/var/lib/pulp/uploads',
24
24
  '/var/lib/mongodb/',
25
25
  '/var/cache/pulp'
26
- ]
26
+ ].select { |dir| File.directory?(dir) }
27
+ end
28
+
29
+ def pulp_data_dirs_mountpoints
30
+ pulp_data_dirs.select { |d| Pathname(d).mountpoint? }
31
+ end
32
+
33
+ def deletable_pulp_dirs
34
+ @deletable_pulp_dirs ||= pulp_data_dirs - pulp_data_dirs_mountpoints
27
35
  end
28
36
 
29
37
  # rubocop:disable Metrics/MethodLength
@@ -52,11 +60,12 @@ module Procedures::Pulp
52
60
  @installed_pulp_packages
53
61
  end
54
62
 
55
- def data_dir_removal_cmds
56
- pulp_data_dirs.select { |dir| File.directory?(dir) }.map { |dir| "rm -rf #{dir}" }
63
+ def data_dir_removal_cmds(pulp_dirs)
64
+ pulp_dirs.map { |dir| "rm -rf #{dir}" }
57
65
  end
58
66
 
59
- def ask_to_proceed(rm_cmds)
67
+ def ask_to_proceed
68
+ rm_cmds = data_dir_removal_cmds(pulp_data_dirs)
60
69
  question = "\nWARNING: All pulp2 packages will be removed with the following commands:\n"
61
70
  question += "\n# rpm -e #{pulp_packages.join(' ')}" if pulp_packages.any?
62
71
  question += "\n# yum remove rh-mongodb34-*"
@@ -69,11 +78,9 @@ module Procedures::Pulp
69
78
  end
70
79
 
71
80
  def run
72
- rm_cmds = data_dir_removal_cmds
73
-
74
81
  assumeyes_val = @assumeyes.nil? ? assumeyes? : @assumeyes
75
82
 
76
- ask_to_proceed(rm_cmds) unless assumeyes_val
83
+ ask_to_proceed unless assumeyes_val
77
84
 
78
85
  remove_pulp if pulp_packages.any?
79
86
 
@@ -85,7 +92,7 @@ module Procedures::Pulp
85
92
 
86
93
  drop_migrations
87
94
 
88
- delete_pulp_data(rm_cmds) if rm_cmds.any?
95
+ delete_pulp_data
89
96
 
90
97
  restart_pulpcore_services
91
98
  end
@@ -162,12 +169,41 @@ module Procedures::Pulp
162
169
  end
163
170
  # rubocop:enable Metrics/BlockLength
164
171
 
165
- def delete_pulp_data(rm_cmds)
166
- with_spinner('Deleting pulp2 data directories') do |spinner|
167
- rm_cmds.each do |cmd|
168
- execute!(cmd)
172
+ def delete_pulp_data
173
+ non_mountpoints = data_dir_removal_cmds(deletable_pulp_dirs)
174
+ mountpoints = pulp_data_dirs_mountpoints
175
+ with_spinner('') do |spinner|
176
+ if non_mountpoints.any?
177
+ spinner.update('Deleting pulp2 data directories.')
178
+ non_mountpoints.each do |cmd|
179
+ execute!(cmd)
180
+ end
181
+ msg_for_del_non_mountpoints(mountpoints, spinner)
182
+ end
183
+ if mountpoints.any?
184
+ msg_for_del_mountpoints(mountpoints, spinner)
169
185
  end
170
- spinner.update('Done deleting pulp2 data directories')
186
+ end
187
+ end
188
+
189
+ def msg_for_del_non_mountpoints(mountpoints, spinner)
190
+ if mountpoints.empty?
191
+ spinner.update('Done deleting all pulp2 data directories.')
192
+ else
193
+ spinner.update("Deleted: #{deletable_pulp_dirs.join("\n")}")
194
+ end
195
+ end
196
+
197
+ def msg_for_del_mountpoints(mountpoints, spinner)
198
+ _, cmd_name = ForemanMaintain.pkg_and_cmd_name
199
+ if mountpoints.count > 1
200
+ spinner.update("The directories #{mountpoints.join(',')} are individual mountpoints.")
201
+ puts "\nThe #{cmd_name} won't delete these directories.\n"\
202
+ 'You need to remove content and these directories on your own.'
203
+ else
204
+ spinner.update("The directory #{mountpoints.join(',')} is individual mountpoint.")
205
+ puts "\nThe #{cmd_name} won't delete the directory.\n"\
206
+ 'You need to remove content and the directory on your own.'
171
207
  end
172
208
  end
173
209
 
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '0.8.23'.freeze
2
+ VERSION = '0.8.26'.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.8.23
4
+ version: 0.8.26
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: 2022-03-07 00:00:00.000000000 Z
11
+ date: 2022-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp