topological_inventory-core 1.1.4 → 1.2.0

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: 347c7cb316d449144a8e1808ba1a9fd99c202612df7a09c0e5083cda50bcdf7d
4
- data.tar.gz: 0356fc633d5ec1729324ff7f6d3a657e503f045eb03697cb60cc03470bbf332f
3
+ metadata.gz: d423a90f53df500b4d073a79c1b226e01a4f84eec55b711cb93565845bcedbe8
4
+ data.tar.gz: d3ca3e3c3531093a6d292fff7476735eeccb51939ce207c9ccd39a45eff94778
5
5
  SHA512:
6
- metadata.gz: d7fa8777bf792f7478d1f618b29136756320ea6e90cf44ce38083a2ea42888ca25c0ba5ed78c95fe3f423dc6131acc93e709e0416982f857463b1a004d179607
7
- data.tar.gz: f9b67fca9caf8ff7cf212a0293f7b53dfefaf6fe7c861b0b378f7033b410eca19673e30b04fc3d438776cd5e53d592ae1470be4e59b01cc3eed724bed78d7734
6
+ metadata.gz: ca7b6570f9727d260be100b1025b50510267b1f6beca197cea465399286b4f3db6864390fdaa2c72a9fc7508cae10b77bf56a64cb7ec0e564916cfbf8f92fb99
7
+ data.tar.gz: ecb71d2cdbaf3d6b1c35581b1367a914794a87633c60a32dc1ecb819e1d0ae2a9c0ec710b13f9a4fdd0b9be9c0a785f60eb1d10a2e4d34f625e737cbdf9430b2
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # TopologicalInventory
1
+ # Topological Inventory Core
2
2
 
3
3
  [![Build Status](https://travis-ci.org/RedHatInsights/topological_inventory-core.svg)](https://travis-ci.org/RedHatInsights/topological_inventory-core)
4
4
  [![Maintainability](https://api.codeclimate.com/v1/badges/34f9bd9412e35c1a36fd/maintainability)](https://codeclimate.com/github/RedHatInsights/topological_inventory-core/maintainability)
@@ -1,4 +1,6 @@
1
1
  class RefreshState < ActiveRecord::Base
2
+ require 'acts_as_tenant'
3
+
2
4
  belongs_to :source
3
5
  belongs_to :tenant
4
6
  has_many :refresh_state_parts
@@ -1,4 +1,6 @@
1
1
  class RefreshStatePart < ActiveRecord::Base
2
+ require 'acts_as_tenant'
3
+
2
4
  belongs_to :refresh_state
3
5
  belongs_to :tenant
4
6
 
@@ -0,0 +1,5 @@
1
+ class AddSourceUpdatedAt < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :volumes, :source_updated_at, :timestamp
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class AddIndexToRefreshStateParts < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_index :refresh_state_parts, :uuid
4
+ add_index :refresh_states, :uuid
5
+ end
6
+ end
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2020_05_05_101547) do
13
+ ActiveRecord::Schema.define(version: 2020_08_11_154716) do
14
14
 
15
15
  # These are extensions that must be enabled in order to support this database
16
16
  enable_extension "plpgsql"
@@ -622,6 +622,7 @@ ActiveRecord::Schema.define(version: 2020_05_05_101547) do
622
622
  t.datetime "updated_at", null: false
623
623
  t.index ["refresh_state_id", "uuid"], name: "index_refresh_state_parts_on_refresh_state_id_and_uuid", unique: true
624
624
  t.index ["tenant_id"], name: "index_refresh_state_parts_on_tenant_id"
625
+ t.index ["uuid"], name: "index_refresh_state_parts_on_uuid"
625
626
  end
626
627
 
627
628
  create_table "refresh_states", force: :cascade do |t|
@@ -639,6 +640,7 @@ ActiveRecord::Schema.define(version: 2020_05_05_101547) do
639
640
  t.datetime "finished_at"
640
641
  t.index ["source_id", "uuid"], name: "index_refresh_states_on_source_id_and_uuid", unique: true
641
642
  t.index ["tenant_id"], name: "index_refresh_states_on_tenant_id"
643
+ t.index ["uuid"], name: "index_refresh_states_on_uuid"
642
644
  end
643
645
 
644
646
  create_table "reservation_tags", id: :serial, force: :cascade do |t|
@@ -1328,6 +1330,7 @@ ActiveRecord::Schema.define(version: 2020_05_05_101547) do
1328
1330
  t.bigint "orchestration_stack_id"
1329
1331
  t.bigint "subscription_id"
1330
1332
  t.bigint "refresh_state_part_id"
1333
+ t.datetime "source_updated_at"
1331
1334
  t.index ["archived_at"], name: "index_volumes_on_archived_at"
1332
1335
  t.index ["last_seen_at"], name: "index_volumes_on_last_seen_at"
1333
1336
  t.index ["orchestration_stack_id"], name: "index_volumes_on_orchestration_stack_id"
@@ -1,5 +1,5 @@
1
1
  module TopologicalInventory
2
2
  module Core
3
- VERSION = '1.1.4'
3
+ VERSION = '1.2.0'
4
4
  end
5
5
  end
@@ -151,14 +151,15 @@ module TopologicalInventory
151
151
  service_instance_tasks_update_by_activerecord(tasks_collection, source, src_refs)
152
152
  end
153
153
 
154
- def task_update_values(svc_instance_id, source_ref, external_url, status, task_status, finished_timestamp, source_id)
154
+ def task_update_values(svc_instance_id, source_ref, external_url, status, artifacts, task_status, finished_timestamp, archived_timestamp, source_id)
155
155
  {
156
- :state => finished_timestamp.blank? ? 'running' : 'completed',
157
- :status => task_status,
156
+ :state => finished_timestamp.blank? && archived_timestamp.blank? ? 'running' : 'completed',
157
+ :status => task_status,
158
158
  :context => {
159
159
  :service_instance => {
160
160
  :id => svc_instance_id,
161
161
  :job_status => status,
162
+ :artifacts => artifacts,
162
163
  :source_id => source_id,
163
164
  :source_ref => source_ref,
164
165
  :url => external_url
@@ -172,12 +173,12 @@ module TopologicalInventory
172
173
  service_instances = ServiceInstance.where(:source_id => source.id, :source_ref => svc_instances_source_ref)
173
174
  tasks_by_source_ref = Task.where(:state => 'running', :target_type => 'ServiceInstance', :source_id => source.id, :target_source_ref => service_instances.pluck(:source_ref)).index_by(&:target_source_ref)
174
175
 
175
- service_instances.select(:id, :external_url, :source_ref, :extra).find_in_batches do |group|
176
+ service_instances.select(:id, :archived_at, :external_url, :source_ref, :extra).find_in_batches do |group|
176
177
  ActiveRecord::Base.transaction do
177
178
  group.each do |svc_instance|
178
179
  next if (task = tasks_by_source_ref[svc_instance.source_ref]).nil?
179
180
 
180
- values = task_update_values(svc_instance.id, svc_instance.source_ref, svc_instance.external_url, svc_instance.extra['status'], svc_instance.extra['task_status'], svc_instance.extra['finished'], source.id)
181
+ values = task_update_values(svc_instance.id, svc_instance.source_ref, svc_instance.external_url, svc_instance.extra['status'], svc_instance.extra['artifacts'], svc_instance.extra['task_status'], svc_instance.extra['finished'], svc_instance.archived_at, source.id)
181
182
  # 1) Updating Task
182
183
  task.update(values)
183
184
 
@@ -198,19 +199,20 @@ module TopologicalInventory
198
199
 
199
200
  # Load saved service instances (IDs needed)
200
201
  svc_instances_values = ServiceInstance.where(:source_ref => tasks_source_ref)
201
- .pluck(:id, :external_url, :source_ref,
202
- Arel.sql("extra->'finished'"),
203
- Arel.sql("extra->'status'"),
204
- Arel.sql("extra->'task_status'"))
202
+ .pluck(:id, :archived_at, :external_url, :source_ref,
203
+ Arel.sql("extra->'finished'"),
204
+ Arel.sql("extra->'status'"),
205
+ Arel.sql("extra->'task_status'"),
206
+ Arel.sql("extra->'artifacts'"))
205
207
  return if svc_instances_values.blank?
206
208
 
207
209
  sql_update_values = []
208
210
 
209
211
  # Preparing SQL update values from loaded ServiceInstances
210
212
  svc_instances_values.each do |attrs|
211
- id, external_url, source_ref, finished_timestamp, status, task_status = attrs[0], attrs[1], attrs[2], attrs[3], attrs[4], attrs[5]
213
+ id, archived_at, external_url, source_ref, finished_timestamp, status, task_status, artifacts = attrs[0], attrs[1], attrs[2], attrs[3], attrs[4], attrs[5], attrs[6], attrs[7]
212
214
 
213
- values = task_update_values(id, external_url, status, task_status, finished_timestamp)
215
+ values = task_update_values(id, source_ref, external_url, status, artifacts, task_status, finished_timestamp, archived_at, source.id)
214
216
  sql_update_values << "('#{source_ref}', '#{values[:state]}', '#{values[:status]}', '#{values[:context].to_json}'::json)"
215
217
  end
216
218
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: topological_inventory-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Grare
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-05 00:00:00.000000000 Z
11
+ date: 2020-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: acts_as_tenant
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.0
47
+ version: 1.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.0
54
+ version: 1.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: manageiq-password
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -136,20 +136,48 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '3.8'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.69.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.69.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-performance
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.3'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.3'
139
167
  - !ruby/object:Gem::Dependency
140
168
  name: simplecov
141
169
  requirement: !ruby/object:Gem::Requirement
142
170
  requirements:
143
- - - ">="
171
+ - - "~>"
144
172
  - !ruby/object:Gem::Version
145
- version: '0'
173
+ version: 0.17.1
146
174
  type: :development
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
- - - ">="
178
+ - - "~>"
151
179
  - !ruby/object:Gem::Version
152
- version: '0'
180
+ version: 0.17.1
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: webmock
155
183
  requirement: !ruby/object:Gem::Requirement
@@ -174,13 +202,6 @@ files:
174
202
  - LICENSE.txt
175
203
  - README.md
176
204
  - Rakefile
177
- - app/assets/config/topological_inventory_manifest.js
178
- - app/assets/javascripts/topological_inventory/application.js
179
- - app/assets/stylesheets/topological_inventory/application.css
180
- - app/controllers/topological_inventory/application_controller.rb
181
- - app/helpers/topological_inventory/application_helper.rb
182
- - app/jobs/topological_inventory/application_job.rb
183
- - app/mailers/topological_inventory/application_mailer.rb
184
205
  - app/models/application_record.rb
185
206
  - app/models/availability.rb
186
207
  - app/models/cluster.rb
@@ -247,9 +268,7 @@ files:
247
268
  - app/models/volume.rb
248
269
  - app/models/volume_attachment.rb
249
270
  - app/models/volume_type.rb
250
- - app/views/layouts/topological_inventory/application.html.erb
251
271
  - config/database.dev.yml
252
- - config/database.yml
253
272
  - db/migrate/20180919170553_add_sources_and_endpoints.rb
254
273
  - db/migrate/20180927171624_add_container_models.rb
255
274
  - db/migrate/20180927205317_add_service_catalog_models.rb
@@ -354,8 +373,10 @@ files:
354
373
  - db/migrate/20200317082640_add_tracking_timestamps_to_refresh_state.rb
355
374
  - db/migrate/20200403114310_add_target_and_source_to_task.rb
356
375
  - db/migrate/20200414123737_extract_tasks_source_ref_from_context.rb
376
+ - db/migrate/20200421141934_add_source_updated_at.rb
357
377
  - db/migrate/20200428090420_add_request_id_to_task.rb
358
378
  - db/migrate/20200505101547_add_forwardable_headers_remove_request_id_on_task.rb
379
+ - db/migrate/20200811154716_add_index_to_refresh_state_parts.rb
359
380
  - db/schema.rb
360
381
  - db/seeds.rb
361
382
  - lib/tasks/topological_inventory_tasks.rake
@@ -387,7 +408,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
387
408
  - !ruby/object:Gem::Version
388
409
  version: '0'
389
410
  requirements: []
390
- rubygems_version: 3.0.8
411
+ rubygems_version: 3.0.3
391
412
  signing_key:
392
413
  specification_version: 4
393
414
  summary: Core Models and Schema for the Topological Inventory Service.
@@ -1,2 +0,0 @@
1
- //= link_directory ../javascripts/topological_inventory .js
2
- //= link_directory ../stylesheets/topological_inventory .css
@@ -1,13 +0,0 @@
1
- // This is a manifest file that'll be compiled into application.js, which will include all the files
2
- // listed below.
3
- //
4
- // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
- // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
- //
7
- // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
- //
10
- // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
- // about supported directives.
12
- //
13
- //= require_tree .
@@ -1,15 +0,0 @@
1
- /*
2
- * This is a manifest file that'll be compiled into application.css, which will include all the files
3
- * listed below.
4
- *
5
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
- * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
- *
8
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
- * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
- * files in this directory. Styles in this file should be added after the last require_* statement.
11
- * It is generally better to create a new file per style scope.
12
- *
13
- *= require_tree .
14
- *= require_self
15
- */
@@ -1,5 +0,0 @@
1
- module TopologicalInventory
2
- class ApplicationController < ActionController::Base
3
- protect_from_forgery with: :exception
4
- end
5
- end
@@ -1,4 +0,0 @@
1
- module TopologicalInventory
2
- module ApplicationHelper
3
- end
4
- end
@@ -1,4 +0,0 @@
1
- module TopologicalInventory
2
- class ApplicationJob < ActiveJob::Base
3
- end
4
- end
@@ -1,6 +0,0 @@
1
- module TopologicalInventory
2
- class ApplicationMailer < ActionMailer::Base
3
- default from: 'from@example.com'
4
- layout 'mailer'
5
- end
6
- end
@@ -1,14 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Topological inventory</title>
5
- <%= stylesheet_link_tag "topological_inventory/application", media: "all" %>
6
- <%= javascript_include_tag "topological_inventory/application" %>
7
- <%= csrf_meta_tags %>
8
- </head>
9
- <body>
10
-
11
- <%= yield %>
12
-
13
- </body>
14
- </html>
@@ -1,23 +0,0 @@
1
- default: &default
2
- adapter: postgresql
3
- encoding: utf8
4
- host: 127.0.0.1
5
- port: 5432
6
- username: root
7
- password: buttons
8
- pool: 5
9
- wait_timeout: 5
10
- min_messages: warning
11
-
12
- development:
13
- <<: *default
14
- database: topological_inventory_development
15
- min_messages: notice
16
-
17
- test:
18
- <<: *default
19
- database: topological_inventory_test
20
-
21
- production:
22
- <<: *default
23
- database: topological_inventory_production