foreman_maintain 0.3.3 → 0.3.4

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: '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