diff --git a/db/migrate/20180607084710_nuage_subclass_l3_cloud_subnet.rb b/db/migrate/20180607084710_nuage_subclass_l3_cloud_subnet.rb new file mode 100644 index 000000000..22ef2a4db --- /dev/null +++ b/db/migrate/20180607084710_nuage_subclass_l3_cloud_subnet.rb @@ -0,0 +1,24 @@ +class NuageSubclassL3CloudSubnet < ActiveRecord::Migration[5.0] + class CloudSubnet < ActiveRecord::Base + self.inheritance_column = :_type_disabled + end + + def up + say_with_time('Migrating Nuage default subnet type to L3 subnet subclass') do + CloudSubnet.where(:type => 'ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet') + .update_all(:type => 'ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet::L3') + end + end + + def down + say_with_time('Reverting Nuage L3 subnet subclass to default subnet type') do + CloudSubnet.where(:type => 'ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet::L3') + .update_all(:type => 'ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet') + end + + say_with_time('Reverting Nuage L2 subnet subclass to default subnet type') do + CloudSubnet.where(:type => 'ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet::L2') + .update_all(:type => 'ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet') + end + end +end diff --git a/spec/migrations/20180607084710_nuage_subclass_l3_cloud_subnet_spec.rb b/spec/migrations/20180607084710_nuage_subclass_l3_cloud_subnet_spec.rb new file mode 100644 index 000000000..764cadef9 --- /dev/null +++ b/spec/migrations/20180607084710_nuage_subclass_l3_cloud_subnet_spec.rb @@ -0,0 +1,48 @@ +require_migration + +describe NuageSubclassL3CloudSubnet do + let(:subnet_stub) { migration_stub :CloudSubnet } + + migration_context :up do + it 'migrates base Nuage type' do + subnet = subnet_stub.create!(:type => 'ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet') + + migrate + subnet.reload + + expect(subnet.type).to eql('ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet::L3') + end + + it 'doesnt modify other subnets' do + subnet = subnet_stub.create!(:type => 'CloudSubnet') + + migrate + subnet.reload + + expect(subnet.type).to eql('CloudSubnet') + end + end + + migration_context :down do + it 'restores base Nuage type' do + subnet_l3 = subnet_stub.create!(:type => 'ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet::L3') + subnet_l2 = subnet_stub.create!(:type => 'ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet::L2') + + migrate + subnet_l3.reload + subnet_l2.reload + + expect(subnet_l3.type).to eql('ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet') + expect(subnet_l2.type).to eql('ManageIQ::Providers::Nuage::NetworkManager::CloudSubnet') + end + + it 'doesnt modify other subnets' do + subnet = subnet_stub.create!(:type => 'CloudSubnet') + + migrate + subnet.reload + + expect(subnet.type).to eql('CloudSubnet') + end + end +end