topological_inventory-core 1.1.3 → 1.1.8

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: c2e1ad6d83dd4100ab40124b8bd6f7425bab0b935779fbc047cc405f3f2320bb
4
- data.tar.gz: be6eef02674c9735e82e04eed7963d5c764d8d3b74188e99539b8fe71079573f
3
+ metadata.gz: e695f0361b4d66ec73f345609275c5184d882b283471b963a802502a3f474bfb
4
+ data.tar.gz: d3b514bb133871100ec4003041c1605ec203498c9fe995df50260e520324e037
5
5
  SHA512:
6
- metadata.gz: f121707edcf1e010f07c453e95cf3cb3e8811d499215b8f2fa38d0887a84353bee5f95a16cff2d2a5dbf2c5d9af9d430be42d7f3a79551a76f93094ca3a9b5e8
7
- data.tar.gz: 0bd249257ae7fd676f7021291e0fd8eb33a19e85075034872f85fe54c28984e76a7ca570dcef894b7f4c81ebcea5b52390f2b9ef72a85e2e740a7749d1e64752
6
+ metadata.gz: bfe84074032bf678982d41a3c86c6db7e97981035930a65c533944e8d7fe1a1409e7db7adb6aa2e6045f6f3fc4451ac817c0491b7a17a3810156f702f479fe2e
7
+ data.tar.gz: f794a8cae67dc978d1b1e538734243421c23b6e39497347fed8f785a61252cb5aa5b82f93bfb4ea7a56b95d35db289eb156c00c345500907af1fbc48070a4ec4
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,11 @@
1
+ class AddForwardableHeadersRemoveRequestIdOnTask < ActiveRecord::Migration[5.2]
2
+ def up
3
+ add_column :tasks, :forwardable_headers, :jsonb
4
+ remove_column :tasks, :x_rh_insights_request
5
+ end
6
+
7
+ def down
8
+ add_column :tasks, :x_rh_insights_request, :string
9
+ remove_column :tasks, :forwardable_headers
10
+ end
11
+ 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_04_28_090420) 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_04_28_090420) 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_04_28_090420) 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|
@@ -1190,7 +1192,7 @@ ActiveRecord::Schema.define(version: 2020_04_28_090420) do
1190
1192
  t.string "target_source_ref"
1191
1193
  t.string "target_type"
1192
1194
  t.bigint "source_id"
1193
- t.string "x_rh_insights_request"
1195
+ t.jsonb "forwardable_headers"
1194
1196
  t.index ["source_id"], name: "index_tasks_on_source_id"
1195
1197
  t.index ["target_type", "target_source_ref"], name: "index_tasks_on_target_type_and_target_source_ref"
1196
1198
  t.index ["tenant_id"], name: "index_tasks_on_tenant_id"
@@ -1328,6 +1330,7 @@ ActiveRecord::Schema.define(version: 2020_04_28_090420) 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.3'
3
+ VERSION = '1.1.8'
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,18 +173,18 @@ 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
 
184
185
  # 2) Saving to updated records (will be published in Kafka)
185
186
  # - see topological_inventory-persister:Workflow.send_task_updates_to_queue!
186
- tasks_collection.updated_records << values.merge(:id => task.id, :x_rh_insights_request => task.x_rh_insights_request)
187
+ tasks_collection.updated_records << values.merge(:id => task.id, :forwardable_headers => task.forwardable_headers)
187
188
  end
188
189
  end
189
190
  end
@@ -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.3
4
+ version: 1.1.8
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-04-29 00:00:00.000000000 Z
11
+ date: 2020-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: acts_as_tenant
@@ -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,7 +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
378
+ - db/migrate/20200505101547_add_forwardable_headers_remove_request_id_on_task.rb
379
+ - db/migrate/20200811154716_add_index_to_refresh_state_parts.rb
358
380
  - db/schema.rb
359
381
  - db/seeds.rb
360
382
  - lib/tasks/topological_inventory_tasks.rake
@@ -386,7 +408,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
386
408
  - !ruby/object:Gem::Version
387
409
  version: '0'
388
410
  requirements: []
389
- rubygems_version: 3.0.6
411
+ rubygems_version: 3.0.3
390
412
  signing_key:
391
413
  specification_version: 4
392
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