Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update resource pool identifiers #764

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions db/migrate/20241025072931_update_resource_pool_identifiers.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
class UpdateResourcePoolIdentifiers < ActiveRecord::Migration[7.0]
class MiqProductFeature < ActiveRecord::Base; end

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

def up
return if MiqProductFeature.none?

say_with_time('Updating resource_pool features to resource_pool_infra') 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('Reverting resource_pool_infra features back to resource_pool') 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,39 @@
require_migration

describe UpdateResourcePoolIdentifiers do
let(:miq_product_feature) { migration_stub(:MiqProductFeature) }

before do
%w[resource_pool resource_pool_view resource_pool_show_list resource_pool_show resource_pool_control resource_pool_tag resource_pool_protect resource_pool_admin resource_pool_delete].each do |identifier|
miq_product_feature.create!(:identifier => 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 do |_old_identifier, 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