foreman_maintain 0.3.3 → 0.3.4

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: '09c832269d99bedd38510d834f77ef84f7921e3c'
4
- data.tar.gz: 5b4c6b6dced266b4ea569113d71efe9b1efc65ff
2
+ SHA256:
3
+ metadata.gz: 0f6837492a59470b98bbbf7d98963f98c0324326ed7beca8d682a2a04df38d6b
4
+ data.tar.gz: b84626fc17039356e4ab10b77a2b2a54fda21c6438850e7558b63617a0556073
5
5
  SHA512:
6
- metadata.gz: af2b744d60ae39bf1c6d0e07f1a2eeb51554228fa53ec6cdcb1d23354e50de2f9a240557c8da8585be64e8b6a398de35c9f30a1e11a0c74d144cd0c566432b46
7
- data.tar.gz: 124bd65b249e146f671d06484a605d0ba158d3b2462df7238725bb7561fe9c9802d5d3e5dcd1ad0541ca6e49edbae4ac86603654a584b6c7e4baa961c8e34907
6
+ metadata.gz: dc8146e0110fd7334b28d56a45b84f7d10936e3e72e56ceaaf0ccc33e8ff16c256fdb1ca73961b3833306b488d471c545b7d8f3967ebab1c2a8653ebde12a594
7
+ data.tar.gz: bbad46d7af9797cf1dcfba28c734dc2494e3258d34f784642460d94d852f70e23a9e49aca2c57bb8fab579bb29ca5c89fdf7438fa2e63a982d58684393cf39b2
@@ -3,21 +3,34 @@ class Features::SyncPlans < ForemanMaintain::Feature
3
3
  label :sync_plans
4
4
  end
5
5
 
6
- def active_sync_plans_count
7
- feature(:foreman_database).query(
8
- <<-SQL
9
- SELECT count(*) AS count FROM katello_sync_plans WHERE enabled ='t'
10
- SQL
11
- ).first['count'].to_i
6
+ def required_new_implementation
7
+ @required_new_implementation ||=
8
+ feature(:foreman_database).query(
9
+ <<-SQL
10
+ SELECT COUNT(1) FROM information_schema.table_constraints
11
+ WHERE constraint_name='katello_sync_plan_foreman_tasks_recurring_logic_fk' AND table_name='katello_sync_plans'
12
+ SQL
13
+ ).first['count'].to_i > 0
12
14
  end
13
15
 
14
- def ids_by_status(enabled = true)
15
- enabled = enabled ? 't' : 'f'
16
- feature(:foreman_database).query(
17
- <<-SQL
18
- SELECT id FROM katello_sync_plans WHERE enabled ='#{enabled}'
16
+ def sync_plan_ids_by_status(enabled = true, filter_ids = nil)
17
+ if filter_ids
18
+ return [] if filter_ids.empty?
19
+
20
+ ids_condition = filter_ids.map { |id| "'#{id}'" }.join(',')
21
+ end
22
+
23
+ if required_new_implementation
24
+ query = <<-SQL
25
+ select sp.id as id from katello_sync_plans sp inner join foreman_tasks_recurring_logics rl on sp.foreman_tasks_recurring_logic_id = rl.id
26
+ where rl.state='#{enabled ? 'active' : 'disabled'}' #{ids_condition ? " AND sp.id IN (#{ids_condition})" : ''}
27
+ SQL
28
+ else
29
+ query = <<-SQL
30
+ SELECT id FROM katello_sync_plans WHERE enabled ='#{enabled ? 't' : 'f'}' #{ids_condition ? " AND id IN (#{ids_condition})" : ''}
19
31
  SQL
20
- ).map { |r| r['id'].to_i }
32
+ end
33
+ feature(:foreman_database).query(query).map { |r| r['id'].to_i }
21
34
  end
22
35
 
23
36
  def make_disable(ids)
@@ -39,8 +52,11 @@ class Features::SyncPlans < ForemanMaintain::Feature
39
52
  private
40
53
 
41
54
  def update_records(ids, enabled)
55
+ ids_not_required_update = sync_plan_ids_by_status(enabled, ids)
56
+ ids_required_update = ids - ids_not_required_update
57
+ make_data_key_empty(enabled) if !ids_not_required_update.empty? && ids_required_update.empty?
42
58
  updated_record_ids = []
43
- ids.each do |sp_id|
59
+ ids_required_update.each do |sp_id|
44
60
  result = feature(:hammer).run("sync-plan update --id #{sp_id} --enabled #{enabled}")
45
61
  if result.include?('Sync plan updated')
46
62
  updated_record_ids << sp_id
@@ -55,15 +71,23 @@ class Features::SyncPlans < ForemanMaintain::Feature
55
71
 
56
72
  def data
57
73
  raise 'Use load_from_storage before accessing the data' unless defined? @data
74
+
58
75
  @data
59
76
  end
60
77
 
78
+ def make_data_key_empty(enabled)
79
+ key_name = enabled ? 'disabled' : 'enabled'
80
+ @data[:"#{key_name}"] = []
81
+ end
82
+
61
83
  def update_data(enabled, new_ids)
62
84
  if enabled
63
85
  @data[:disabled] -= new_ids
64
86
  @data[:enabled] = new_ids
65
87
  else
66
- @data[:disabled].concat(new_ids)
88
+ @data[:disabled] = [] unless @data[:disabled]
89
+ @data[:enabled] = [] if @data[:disabled].empty?
90
+ @data[:disabled].concat(new_ids).uniq!
67
91
  end
68
92
  end
69
93
  end
@@ -21,7 +21,7 @@ module Procedures::SyncPlans
21
21
  default_storage = ForemanMaintain.storage(:default)
22
22
  feature(:sync_plans).load_from_storage(default_storage)
23
23
  with_spinner('disabling sync plans') do |spinner|
24
- ids = feature(:sync_plans).ids_by_status(true)
24
+ ids = feature(:sync_plans).sync_plan_ids_by_status(true)
25
25
  feature(:sync_plans).make_disable(ids)
26
26
  spinner.update "Total #{ids.length} sync plans are now disabled."
27
27
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '0.3.3'.freeze
2
+ VERSION = '0.3.4'.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.3
4
+ version: 0.3.4
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: 2019-04-11 00:00:00.000000000 Z
11
+ date: 2019-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -329,7 +329,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
329
329
  version: '0'
330
330
  requirements: []
331
331
  rubyforge_project:
332
- rubygems_version: 2.6.14
332
+ rubygems_version: 2.7.6
333
333
  signing_key:
334
334
  specification_version: 4
335
335
  summary: Foreman maintenance tool belt