inventory_refresh 0.3.1 → 0.3.6

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