Skip to content

Commit

Permalink
Merge pull request #752 from agrare/undo_resource_pool_infra_identifiers
Browse files Browse the repository at this point in the history
Reset resource_pool_infra product features
  • Loading branch information
jrafanie authored Aug 30, 2024
2 parents 08097e7 + e142870 commit 688930b
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 0 deletions.
35 changes: 35 additions & 0 deletions db/migrate/20240830172702_reset_resource_pool_identifiers.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
class ResetResourcePoolIdentifiers < ActiveRecord::Migration[6.1]
class MiqProductFeature < ActiveRecord::Base; end

FEATURE_MAPPING_UPDATE = {
'resource_pool_infra' => 'resource_pool',
'resource_pool_infra_view' => 'resource_pool_view',
'resource_pool_infra_show_list' => 'resource_pool_show_list',
'resource_pool_infra_show' => 'resource_pool_show',
'resource_pool_infra_control' => 'resource_pool_control',
'resource_pool_infra_tag' => 'resource_pool_tag',
'resource_pool_infra_protect' => 'resource_pool_protect',
'resource_pool_infra_admin' => 'resource_pool_admin',
'resource_pool_infra_delete' => 'resource_pool_delete'
}.freeze

def up
return if MiqProductFeature.none?

say_with_time('Resetting resource_pool_infra features back to resource_pool') do
FEATURE_MAPPING_UPDATE.each do |from, to|
MiqProductFeature.find_by(:identifier => from)&.update!(:identifier => to)
end
end
end

def down
return if MiqProductFeature.none?

say_with_time('Updating resource_pool features to resource_pool_infra') do
FEATURE_MAPPING_UPDATE.each do |to, from|
MiqProductFeature.find_by(:identifier => from)&.update!(:identifier => to)
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
require_migration

# This is mostly necessary for data migrations, so feel free to delete this
# file if you do no need it.
describe ResetResourcePoolIdentifiers do
let(:miq_product_feature) { migration_stub(:MiqProductFeature) }

before do
described_class::FEATURE_MAPPING_UPDATE.each_key do |old_identifier|
miq_product_feature.create!(:identifier => old_identifier)
end
end

migration_context :up do
it "updates existing resource_pool features to resource_pool_infra" do
migrate

described_class::FEATURE_MAPPING_UPDATE.each do |old_identifier, new_identifier|
expect(miq_product_feature.exists?(:identifier => old_identifier)).to be_falsy
expect(miq_product_feature.exists?(:identifier => new_identifier)).to be_truthy
end
end
end

migration_context :down do
before do
described_class::FEATURE_MAPPING_UPDATE.each_value do |new_identifier|
miq_product_feature.create!(:identifier => new_identifier)
end
end

it "reverts resource_pool_infra features back to resource_pool" do
migrate

described_class::FEATURE_MAPPING_UPDATE.each do |old_identifier, new_identifier|
expect(miq_product_feature.exists?(:identifier => new_identifier)).to be_falsy
expect(miq_product_feature.exists?(:identifier => old_identifier)).to be_truthy
end
end
end
end

0 comments on commit 688930b

Please sign in to comment.