Skip to content

Database prep for phase 2 of container registry import

Steve Abrams requested to merge registry-phase-2-rails-db-migrations into master

🏘 Context

We are preparing for Phase 2 of the Container Registry migration which involves importing all existing container repositories to the new platform (Phase 1 involved routing all new container repositories to the new platform).

This import will be driven by the rails project using the container_repositories table. See &7316 (closed) for full details of how the import will work.

🔬 What does this MR do and why?

This MR adds the necessary application_settings and container_repositories columns needed to both control and track the import process. These attributes will be used in the following MRs described in &7316 (closed). See #349740 (closed) for descriptions of each new column.

🐘 Database

Up migration output
== 20220106230629 AddRegistryMigrationApplicationSettings: migrating ==========
-- add_column(:application_settings, :container_registry_import_max_tags_count, :integer, {:default=>100, :null=>false})
   -> 0.0071s
-- add_column(:application_settings, :container_registry_import_max_retries, :integer, {:default=>3, :null=>false})
   -> 0.0020s
-- add_column(:application_settings, :container_registry_import_start_max_retries, :integer, {:default=>50, :null=>false})
   -> 0.0022s
-- add_column(:application_settings, :container_registry_import_max_step_duration, :integer, {:default=>5 minutes, :null=>false})
   -> 0.0020s
-- add_column(:application_settings, :container_registry_import_target_plan, :text, {:default=>"free", :null=>false})
   -> 0.0018s
-- add_column(:application_settings, :container_registry_import_created_before, :datetime_with_timezone, {:default=>"2020-01-05 00:00:00", :null=>false})
   -> 0.0019s
== 20220106230629 AddRegistryMigrationApplicationSettings: migrated (0.0177s) =

== 20220106230712 AddMigrationColumnsToContainerRepositories: migrating =======
-- add_column(:container_repositories, :migration_pre_import_started_at, :datetime_with_timezone)
   -> 0.0033s
-- add_column(:container_repositories, :migration_pre_import_done_at, :datetime_with_timezone)
   -> 0.0012s
-- add_column(:container_repositories, :migration_import_started_at, :datetime_with_timezone)
   -> 0.0011s
-- add_column(:container_repositories, :migration_import_done_at, :datetime_with_timezone)
   -> 0.0010s
-- add_column(:container_repositories, :migration_aborted_at, :datetime_with_timezone)
   -> 0.0010s
-- add_column(:container_repositories, :migration_skipped_at, :datetime_with_timezone)
   -> 0.0010s
-- add_column(:container_repositories, :migration_retries_count, :integer, {:default=>0, :null=>false})
   -> 0.0026s
-- add_column(:container_repositories, :migration_skipped_reason, :smallint)
   -> 0.0010s
-- add_column(:container_repositories, :migration_state, :text, {:default=>"default", :null=>false})
   -> 0.0013s
-- add_column(:container_repositories, :migration_aborted_in_state, :text)
   -> 0.0009s
== 20220106230712 AddMigrationColumnsToContainerRepositories: migrated (0.0150s)

== 20220117225936 AddTextLimitsToContainerRepositoriesMigrationColumns: migrating
-- transaction_open?()
   -> 0.0000s
-- current_schema()
   -> 0.0005s
-- transaction_open?()
   -> 0.0000s
-- execute("ALTER TABLE container_repositories\nADD CONSTRAINT check_13c58fe73a\nCHECK ( char_length(migration_state) <= 255 )\nNOT VALID;\n")
   -> 0.0017s
-- current_schema()
   -> 0.0004s
-- execute("SET statement_timeout TO 0")
   -> 0.0006s
-- execute("ALTER TABLE container_repositories VALIDATE CONSTRAINT check_13c58fe73a;")
   -> 0.0011s
-- execute("RESET statement_timeout")
   -> 0.0006s
-- transaction_open?()
   -> 0.0000s
-- current_schema()
   -> 0.0002s
-- transaction_open?()
   -> 0.0000s
-- execute("ALTER TABLE container_repositories\nADD CONSTRAINT check_97f0249439\nCHECK ( char_length(migration_aborted_in_state) <= 255 )\nNOT VALID;\n")
   -> 0.0009s
-- current_schema()
   -> 0.0002s
-- execute("ALTER TABLE container_repositories VALIDATE CONSTRAINT check_97f0249439;")
   -> 0.0010s
== 20220117225936 AddTextLimitsToContainerRepositoriesMigrationColumns: migrated (0.0287s)

== 20220118141950 AddTextLimitToContainerRegistryImportTargetPlan: migrating ==
-- transaction_open?()
   -> 0.0000s
-- current_schema()
   -> 0.0004s
-- transaction_open?()
   -> 0.0000s
-- execute("ALTER TABLE application_settings\nADD CONSTRAINT check_3559645ae5\nCHECK ( char_length(container_registry_import_target_plan) <= 255 )\nNOT VALID;\n")
   -> 0.0049s
-- current_schema()
   -> 0.0002s
-- execute("SET statement_timeout TO 0")
   -> 0.0006s
-- execute("ALTER TABLE application_settings VALIDATE CONSTRAINT check_3559645ae5;")
   -> 0.0015s
-- execute("RESET statement_timeout")
   -> 0.0006s
== 20220118141950 AddTextLimitToContainerRegistryImportTargetPlan: migrated (0.0222s)
Down migration output
== 20220118141950 AddTextLimitToContainerRegistryImportTargetPlan: reverting ==
-- transaction_open?()
   -> 0.0000s
-- transaction_open?()
   -> 0.0000s
-- execute("ALTER TABLE application_settings\nDROP CONSTRAINT IF EXISTS check_3559645ae5\n")
   -> 0.0018s
== 20220118141950 AddTextLimitToContainerRegistryImportTargetPlan: reverted (0.0109s)

== 20220117225936 AddTextLimitsToContainerRepositoriesMigrationColumns: reverting
-- transaction_open?()
   -> 0.0000s
-- transaction_open?()
   -> 0.0000s
-- execute("ALTER TABLE container_repositories\nDROP CONSTRAINT IF EXISTS check_13c58fe73a\n")
   -> 0.0010s
-- transaction_open?()
   -> 0.0000s
-- transaction_open?()
   -> 0.0000s
-- execute("ALTER TABLE container_repositories\nDROP CONSTRAINT IF EXISTS check_97f0249439\n")
   -> 0.0007s
== 20220117225936 AddTextLimitsToContainerRepositoriesMigrationColumns: reverted (0.0147s)

== 20220106230712 AddMigrationColumnsToContainerRepositories: reverting =======
-- remove_column(:container_repositories, :migration_aborted_in_state, :text)
   -> 0.0028s
-- remove_column(:container_repositories, :migration_state, :text, {:default=>"default", :null=>false})
   -> 0.0018s
-- remove_column(:container_repositories, :migration_skipped_reason, :smallint)
   -> 0.0013s
-- remove_column(:container_repositories, :migration_retries_count, :integer, {:default=>0, :null=>false})
   -> 0.0011s
-- remove_column(:container_repositories, :migration_skipped_at, :datetime_with_timezone)
   -> 0.0009s
-- remove_column(:container_repositories, :migration_aborted_at, :datetime_with_timezone)
   -> 0.0009s
-- remove_column(:container_repositories, :migration_import_done_at, :datetime_with_timezone)
   -> 0.0009s
-- remove_column(:container_repositories, :migration_import_started_at, :datetime_with_timezone)
   -> 0.0009s
-- remove_column(:container_repositories, :migration_pre_import_done_at, :datetime_with_timezone)
   -> 0.0009s
-- remove_column(:container_repositories, :migration_pre_import_started_at, :datetime_with_timezone)
   -> 0.0009s
== 20220106230712 AddMigrationColumnsToContainerRepositories: reverted (0.0139s)

== 20220106230629 AddRegistryMigrationApplicationSettings: reverting ==========
-- remove_column(:application_settings, :container_registry_import_created_before, :datetime_with_timezone, {:default=>"2020-01-05 00:00:00", :null=>false})
   -> 0.0041s
-- remove_column(:application_settings, :container_registry_import_target_plan, :text, {:default=>"free", :null=>false})
   -> 0.0015s
-- remove_column(:application_settings, :container_registry_import_max_step_duration, :integer, {:default=>5 minutes, :null=>false})
   -> 0.0015s
-- remove_column(:application_settings, :container_registry_import_start_max_retries, :integer, {:default=>50, :null=>false})
   -> 0.0014s
-- remove_column(:application_settings, :container_registry_import_max_retries, :integer, {:default=>3, :null=>false})
   -> 0.0015s
-- remove_column(:application_settings, :container_registry_import_max_tags_count, :integer, {:default=>100, :null=>false})
   -> 0.0015s
== 20220106230629 AddRegistryMigrationApplicationSettings: reverted (0.0150s) =

📷 Screenshots or screen recordings

N/A

How to set up and validate locally

Nothing to validate outside of running the migrations.

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related: #349740 (closed)

Edited by Steve Abrams

Merge request reports