inventory_refresh 0.3.1 → 0.3.6

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
2
  SHA256:
3
- metadata.gz: b326cffd9bf55a9d960022f65397575975b631ddf00b95bc2b19b520464fec94
4
- data.tar.gz: 97ab5734fe7dcb1782fb1aaac1047f4222d988b028d39b43084b10565b4f88f4
3
+ metadata.gz: c45babbc585f12693544de305f05e4011e1e3ef7ccb4d3fb1dd306d17d8814b2
4
+ data.tar.gz: 8512e2e81eb065b5ddd486ab5a53e1ca0e2c09f7fa426fa82ffbeab12dc322ec
5
5
  SHA512:
6
- metadata.gz: 7f8b0916b49e99eed8c53041a25c828614909b532770dcaff905bbab908c47129a797bb522a6ded215b4ffd7d97e675afde384e0f308d926a848d860da54c0f6
7
- data.tar.gz: 7d42174e2b279952f7e921318697d974db62823066760e62923383fee3c779578935b2489ac51ee26b73a5a56d191298c80a1007213d78069d5bc74e1350d35c
6
+ metadata.gz: f41ba870e4a66782549e2a6baae960281ec2604c70633d37ef993b013ac3201b887a4346c68d277167b4b5d688986d95a937e9934d9b1dd3057939644fc3eed4
7
+ data.tar.gz: f8a1644db501c32caebe8f7fa5eea9602b3a140180e822b1abe941676b654595743fe9f87ec73574a4a842a7b2373ada8aba325c17667eeb159b55f27ebf799d
@@ -34,6 +34,7 @@ engines:
34
34
  rubocop:
35
35
  enabled: true
36
36
  config: '.rubocop_cc.yml'
37
+ channel: rubocop-0-69
37
38
  prepare:
38
39
  fetch:
39
40
  - url: "https://raw.githubusercontent.com/ManageIQ/guides/master/.rubocop_base.yml"
@@ -0,0 +1 @@
1
+ * @agrare @Fryguy @Ladas @slemrmartin
@@ -3,8 +3,8 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.4.4
7
- - 2.3.6
6
+ - 2.5.7
7
+ - 2.6.5
8
8
  addons:
9
9
  postgresql: '10'
10
10
  env:
@@ -23,13 +23,15 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.add_dependency "activerecord", "~> 5.0"
26
- spec.add_dependency "more_core_extensions", "~> 3.5"
26
+ spec.add_dependency "more_core_extensions", ">=3.5", "< 5"
27
27
  spec.add_dependency "pg", "> 0"
28
28
 
29
29
  spec.add_development_dependency "ancestry"
30
- spec.add_development_dependency "bundler", "~> 2.0.1"
30
+ spec.add_development_dependency "bundler", "~> 2.0"
31
31
  spec.add_development_dependency "factory_bot", "~> 4.11.1"
32
32
  spec.add_development_dependency "rake", "~> 10.0"
33
33
  spec.add_development_dependency "rspec", "~> 3.0"
34
+ spec.add_development_dependency "rubocop"
35
+ spec.add_development_dependency "rubocop-performance"
34
36
  spec.add_development_dependency "simplecov"
35
37
  end
@@ -342,13 +342,25 @@ module InventoryRefresh
342
342
  #
343
343
  # @return [Array<Symbol>] attributes that are needed for saving of the record
344
344
  def fixed_attributes
345
+ not_null_attributes = []
346
+
345
347
  if model_class
348
+ # Attrs having presence validator
346
349
  presence_validators = model_class.validators.detect { |x| x.kind_of?(ActiveRecord::Validations::PresenceValidator) }
350
+ not_null_attributes += presence_validators.attributes if presence_validators.present?
351
+
352
+ # Column names having NOT NULL constraint
353
+ non_null_constraints = model_class.columns_hash.values.reject(&:null).map(&:name) - [model_class.primary_key]
354
+ not_null_attributes += non_null_constraints.map(&:to_sym)
355
+
356
+ # Column names having NOT NULL constraint transformed to relation names
357
+ not_null_attributes += non_null_constraints.map {|x| foreign_key_to_association_mapping[x]}.compact
347
358
  end
348
359
  # Attributes that has to be always on the entity, so attributes making unique index of the record + attributes
349
360
  # that have presence validation
361
+
350
362
  fixed_attributes = manager_ref
351
- fixed_attributes += presence_validators.attributes if presence_validators.present?
363
+ fixed_attributes += not_null_attributes.uniq
352
364
  fixed_attributes
353
365
  end
354
366
 
@@ -52,7 +52,7 @@ module InventoryRefresh
52
52
 
53
53
  # @return [Boolean] true if the model_class supports STI
54
54
  def supports_sti?
55
- @supports_sti_cache = model_class.column_names.include?("type") if @supports_sti_cache.nil?
55
+ @supports_sti_cache = model_class&.column_names.to_a.include?("type") if @supports_sti_cache.nil?
56
56
  @supports_sti_cache
57
57
  end
58
58
 
@@ -62,7 +62,7 @@ module InventoryRefresh
62
62
  @supported_cols_cache ||= {}
63
63
  return @supported_cols_cache[column_name.to_sym] unless @supported_cols_cache[column_name.to_sym].nil?
64
64
 
65
- include_col = model_class.column_names.include?(column_name.to_s)
65
+ include_col = model_class&.column_names.to_a.include?(column_name.to_s)
66
66
  if %w(created_on created_at updated_on updated_at).include?(column_name.to_s)
67
67
  include_col &&= ActiveRecord::Base.record_timestamps
68
68
  end
@@ -5,7 +5,10 @@ module InventoryRefresh
5
5
 
6
6
  attr_reader :manager, :collections
7
7
 
8
- attr_accessor :refresh_state_uuid, :refresh_state_part_uuid, :total_parts, :sweep_scope, :retry_count, :retry_max
8
+ attr_accessor :refresh_state_uuid, :refresh_state_part_uuid, :refresh_time_tracking, :total_parts, :sweep_scope, :retry_count, :retry_max
9
+ attr_accessor :persister_started_at, :persister_finished_at,
10
+ :refresh_state_part_collected_at, :refresh_state_part_sent_at,
11
+ :refresh_state_started_at, :refresh_state_sent_at, :ingress_api_sent_at
9
12
 
10
13
  # @param manager [ManageIQ::Providers::BaseManager] A manager object
11
14
  def initialize(manager)
@@ -13,6 +16,8 @@ module InventoryRefresh
13
16
 
14
17
  @collections = {}
15
18
 
19
+ self.persister_started_at = Time.now.utc.to_datetime.to_s
20
+
16
21
  initialize_inventory_collections
17
22
  end
18
23
 
@@ -105,13 +110,19 @@ module InventoryRefresh
105
110
  end.compact
106
111
 
107
112
  {
108
- :refresh_state_uuid => refresh_state_uuid,
109
- :refresh_state_part_uuid => refresh_state_part_uuid,
110
- :retry_count => retry_count,
111
- :retry_max => retry_max,
112
- :total_parts => total_parts,
113
- :sweep_scope => sweep_scope_to_hash(sweep_scope),
114
- :collections => collections_data,
113
+ :refresh_state_uuid => refresh_state_uuid,
114
+ :refresh_state_part_uuid => refresh_state_part_uuid,
115
+ :refresh_state_part_collected_at => refresh_state_part_collected_at,
116
+ :refresh_state_part_sent_at => refresh_state_part_sent_at,
117
+ :refresh_state_started_at => refresh_state_started_at,
118
+ :refresh_state_sent_at => refresh_state_sent_at,
119
+ :ingress_api_sent_at => ingress_api_sent_at,
120
+ :refresh_time_tracking => refresh_time_tracking,
121
+ :retry_count => retry_count,
122
+ :retry_max => retry_max,
123
+ :total_parts => total_parts,
124
+ :sweep_scope => sweep_scope_to_hash(sweep_scope),
125
+ :collections => collections_data,
115
126
  }
116
127
  end
117
128
 
@@ -137,12 +148,17 @@ module InventoryRefresh
137
148
  inventory_collection.from_hash(collection, persister.collections)
138
149
  end
139
150
 
140
- persister.refresh_state_uuid = persister_data['refresh_state_uuid']
141
- persister.refresh_state_part_uuid = persister_data['refresh_state_part_uuid']
142
- persister.retry_count = persister_data['retry_count']
143
- persister.retry_max = persister_data['retry_max']
144
- persister.total_parts = persister_data['total_parts']
145
- persister.sweep_scope = sweep_scope_from_hash(persister_data['sweep_scope'], persister.collections)
151
+ persister.refresh_state_uuid = persister_data['refresh_state_uuid']
152
+ persister.refresh_state_part_uuid = persister_data['refresh_state_part_uuid']
153
+ persister.refresh_state_part_collected_at = persister_data['refresh_state_part_collected_at']
154
+ persister.refresh_state_part_sent_at = persister_data['refresh_state_part_sent_at']
155
+ persister.refresh_state_started_at = persister_data['refresh_state_started_at']
156
+ persister.refresh_state_sent_at = persister_data['refresh_state_sent_at']
157
+ persister.ingress_api_sent_at = persister_data['ingress_api_sent_at']
158
+ persister.retry_count = persister_data['retry_count']
159
+ persister.retry_max = persister_data['retry_max']
160
+ persister.total_parts = persister_data['total_parts']
161
+ persister.sweep_scope = sweep_scope_from_hash(persister_data['sweep_scope'], persister.collections)
146
162
  end
147
163
  end
148
164
 
@@ -1,3 +1,3 @@
1
1
  module InventoryRefresh
2
- VERSION = "0.3.1".freeze
2
+ VERSION = "0.3.6".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inventory_refresh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - ManageIQ Developers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-09 00:00:00.000000000 Z
11
+ date: 2020-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -28,16 +28,22 @@ dependencies:
28
28
  name: more_core_extensions
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.5'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '5'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - "~>"
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '3.5'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '5'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: pg
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +78,14 @@ dependencies:
72
78
  requirements:
73
79
  - - "~>"
74
80
  - !ruby/object:Gem::Version
75
- version: 2.0.1
81
+ version: '2.0'
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
86
  - - "~>"
81
87
  - !ruby/object:Gem::Version
82
- version: 2.0.1
88
+ version: '2.0'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: factory_bot
85
91
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +128,34 @@ dependencies:
122
128
  - - "~>"
123
129
  - !ruby/object:Gem::Version
124
130
  version: '3.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rubocop
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop-performance
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
125
159
  - !ruby/object:Gem::Dependency
126
160
  name: simplecov
127
161
  requirement: !ruby/object:Gem::Requirement
@@ -143,6 +177,7 @@ extensions: []
143
177
  extra_rdoc_files: []
144
178
  files:
145
179
  - ".codeclimate.yml"
180
+ - ".github/CODEOWNERS"
146
181
  - ".gitignore"
147
182
  - ".rspec"
148
183
  - ".rspec_ci"
@@ -221,8 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
221
256
  - !ruby/object:Gem::Version
222
257
  version: '0'
223
258
  requirements: []
224
- rubyforge_project:
225
- rubygems_version: 2.7.6.2
259
+ rubygems_version: 3.1.3
226
260
  signing_key:
227
261
  specification_version: 4
228
262
  summary: Topological Inventory Persister