From 74a8edaa152b3e0af31571b5622c1b1e9d09c07f Mon Sep 17 00:00:00 2001 From: hsong-rh Date: Thu, 19 Jul 2018 15:14:43 -0400 Subject: [PATCH 1/6] Add internal column to ServiceTemplate table https://bugzilla.redhat.com/show_bug.cgi?id=1594408 --- ...163110_add_internal_to_service_template.rb | 17 ++++++++++++++ ...0_add_internal_to_service_template_spec.rb | 23 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 db/migrate/20180719163110_add_internal_to_service_template.rb create mode 100644 spec/migrations/20180719163110_add_internal_to_service_template_spec.rb diff --git a/db/migrate/20180719163110_add_internal_to_service_template.rb b/db/migrate/20180719163110_add_internal_to_service_template.rb new file mode 100644 index 000000000..173f9d36d --- /dev/null +++ b/db/migrate/20180719163110_add_internal_to_service_template.rb @@ -0,0 +1,17 @@ +class AddInternalToServiceTemplate < ActiveRecord::Migration[5.0] + class ServiceTemplate < ActiveRecord::Base + self.inheritance_column = :_type_disabled + end + + def up + add_column :service_templates, :internal, :boolean + + say_with_time("Set ServiceTemplate internal") do + ServiceTemplate.where(:type => "ServiceTemplateTransformationPlan").update_all(:internal => true) + end + end + + def down + remove_column :service_templates, :internal + end +end diff --git a/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb new file mode 100644 index 000000000..e1243b1e8 --- /dev/null +++ b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb @@ -0,0 +1,23 @@ +require_migration + +describe AddInternalToServiceTemplate do + let(:service_template_stub) { migration_stub(:ServiceTemplate) } + + migration_context :up do + it "sets internal to true when type is ServiceTemplateTransformationPlan" do + st = service_template_stub.create!(:type => 'ServiceTemplateTransformationPlan') + + migrate + + expect(st.reload.internal).to be_truthy + end + + it "skip internal for other types" do + st = service_template_stub.create!(:type => 'OtherServiceTemplateType') + + migrate + + expect(st.reload.internal).to be_nil + end + end +end From 73b158d87d626a5a771b235482bd1b16baf92e79 Mon Sep 17 00:00:00 2001 From: hsong-rh Date: Fri, 20 Jul 2018 15:48:05 -0400 Subject: [PATCH 2/6] Changed to use reserve_table to migrate --- ...163110_add_internal_to_service_template.rb | 15 +++++++++++-- ...0_add_internal_to_service_template_spec.rb | 22 +++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/db/migrate/20180719163110_add_internal_to_service_template.rb b/db/migrate/20180719163110_add_internal_to_service_template.rb index 173f9d36d..4d65e323f 100644 --- a/db/migrate/20180719163110_add_internal_to_service_template.rb +++ b/db/migrate/20180719163110_add_internal_to_service_template.rb @@ -1,17 +1,28 @@ class AddInternalToServiceTemplate < ActiveRecord::Migration[5.0] class ServiceTemplate < ActiveRecord::Base self.inheritance_column = :_type_disabled + + include ReservedMigrationMixin end def up add_column :service_templates, :internal, :boolean - say_with_time("Set ServiceTemplate internal") do - ServiceTemplate.where(:type => "ServiceTemplateTransformationPlan").update_all(:internal => true) + say_with_time("Migrate data from reserved table to ServiceTemplate") do + ServiceTemplate.includes(:reserved_rec).where(:type => "ServiceTemplateTransformationPlan").each do |st| + st.reserved_hash_migrate(:internal) + end end end def down + say_with_time("Migrate data from ServiceTemplate to reserved table") do + ServiceTemplate.includes(:reserved_rec).where(:type => "ServiceTemplateTransformationPlan").each do |st| + st.reserved_hash_set(:internal, st.internal) + st.save! + end + end + remove_column :service_templates, :internal end end diff --git a/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb index e1243b1e8..b6008d5c4 100644 --- a/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb +++ b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb @@ -1,23 +1,37 @@ require_migration describe AddInternalToServiceTemplate do + let(:reserve_stub) { Spec::Support::MigrationStubs.reserved_stub } let(:service_template_stub) { migration_stub(:ServiceTemplate) } migration_context :up do - it "sets internal to true when type is ServiceTemplateTransformationPlan" do + it "migrate reserve data to ServiceTemplate" do st = service_template_stub.create!(:type => 'ServiceTemplateTransformationPlan') + reserve_stub.create!( + :resource_type => st.class.name, + :resource_id => st.id, + :reserved => { + :internal => true, + } + ) migrate expect(st.reload.internal).to be_truthy end - it "skip internal for other types" do - st = service_template_stub.create!(:type => 'OtherServiceTemplateType') + it "migrate internal in ServiceTemplate to reserve table" do + st = service_template_stub.create!(:type => 'ServiceTemplateTransformationPlan') migrate - expect(st.reload.internal).to be_nil + expect(reserve_stub.count).to eq(1) + + reserved_rec = reserve_stub.first + expect(reserved_rec.resource_id).to eq(st.id) + expect(reserved_rec.resource_type).to eq(st.class.name) + + expect(reserved_rec.reserved[:internal]).to be_truthy end end end From 9e0881ae5deae1c394c9cf6d3bd553ca188ca8fe Mon Sep 17 00:00:00 2001 From: hsong-rh Date: Mon, 23 Jul 2018 14:10:21 -0400 Subject: [PATCH 3/6] Fix spec errors --- .../20180719163110_add_internal_to_service_template_spec.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb index b6008d5c4..416e1d7bf 100644 --- a/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb +++ b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb @@ -17,9 +17,13 @@ migrate - expect(st.reload.internal).to be_truthy + st.reload + expect(reserve_stub.count).to eq(0) + expect(st.internal).to be_truthy end + end + migration_context :down do it "migrate internal in ServiceTemplate to reserve table" do st = service_template_stub.create!(:type => 'ServiceTemplateTransformationPlan') From e1cbbde6754dba3fd0451187558345732031f58c Mon Sep 17 00:00:00 2001 From: hsong-rh Date: Mon, 23 Jul 2018 16:57:53 -0400 Subject: [PATCH 4/6] Add include MigrationStubHelper --- db/migrate/20180719163110_add_internal_to_service_template.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/db/migrate/20180719163110_add_internal_to_service_template.rb b/db/migrate/20180719163110_add_internal_to_service_template.rb index 4d65e323f..4cd604d96 100644 --- a/db/migrate/20180719163110_add_internal_to_service_template.rb +++ b/db/migrate/20180719163110_add_internal_to_service_template.rb @@ -3,6 +3,7 @@ class ServiceTemplate < ActiveRecord::Base self.inheritance_column = :_type_disabled include ReservedMigrationMixin + include MigrationStubHelper end def up From 8146560b7689c10705d630432500c5f107380a76 Mon Sep 17 00:00:00 2001 From: hsong-rh Date: Mon, 23 Jul 2018 17:52:16 -0400 Subject: [PATCH 5/6] Fix build error --- .../20180719163110_add_internal_to_service_template_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb index 416e1d7bf..0a33a3f37 100644 --- a/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb +++ b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb @@ -25,7 +25,7 @@ migration_context :down do it "migrate internal in ServiceTemplate to reserve table" do - st = service_template_stub.create!(:type => 'ServiceTemplateTransformationPlan') + st = service_template_stub.create!(:type => 'ServiceTemplateTransformationPlan', :internal => true) migrate From 89b60c32c92afa342a36a731bb43db7f63d0a773 Mon Sep 17 00:00:00 2001 From: hsong-rh Date: Tue, 24 Jul 2018 09:27:54 -0400 Subject: [PATCH 6/6] Added test case for no reserved data --- .../20180719163110_add_internal_to_service_template.rb | 4 ++++ ...0180719163110_add_internal_to_service_template_spec.rb | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/db/migrate/20180719163110_add_internal_to_service_template.rb b/db/migrate/20180719163110_add_internal_to_service_template.rb index 4cd604d96..8308393e6 100644 --- a/db/migrate/20180719163110_add_internal_to_service_template.rb +++ b/db/migrate/20180719163110_add_internal_to_service_template.rb @@ -14,6 +14,10 @@ def up st.reserved_hash_migrate(:internal) end end + + say_with_time("Set ServiceTemplate internal") do + ServiceTemplate.where(:type => "ServiceTemplateTransformationPlan").update_all(:internal => true) + end end def down diff --git a/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb index 0a33a3f37..a63e5b806 100644 --- a/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb +++ b/spec/migrations/20180719163110_add_internal_to_service_template_spec.rb @@ -5,6 +5,14 @@ let(:service_template_stub) { migration_stub(:ServiceTemplate) } migration_context :up do + it "sets internal to true when type is ServiceTemplateTransformationPlan" do + st = service_template_stub.create!(:type => 'ServiceTemplateTransformationPlan') + + migrate + + expect(st.reload.internal).to be_truthy + end + it "migrate reserve data to ServiceTemplate" do st = service_template_stub.create!(:type => 'ServiceTemplateTransformationPlan') reserve_stub.create!(