diff --git a/migrate_to_single_container.rb b/migrate_to_single_container.rb index 049c0f0..35d5827 100755 --- a/migrate_to_single_container.rb +++ b/migrate_to_single_container.rb @@ -129,15 +129,45 @@ class Migrator end end -username = ARGV[0] +class MigrationRunner + + attr_accessor :environment, :settings + + def initialize + @environment = ENV["ENVIRONMENT"] || "staging" + @settings = YAML.load(File.read('config.yml'))[@environment] + end + + def migrate + while username = pick_unmigrated_user + migrator = Migrator.new username + migrator.migrate + end + end + + def unmigrated_users + redis.hgetall("rs:container_migration").select { |_, value| + value == "not_started" + }.keys + end + + def pick_unmigrated_user + unmigrated_users.sample # pick a random user from list + end + + def redis + @redis ||= Redis.new(@settings["redis"].symbolize_keys) + end -unless username - puts "No username given." - puts "Usage:" - puts "ENVIRONMENT=staging ./migrate_to_single_container.rb " - exit 1 end -migrator = Migrator.new username -migrator.migrate +username = ARGV[0] + +if username + migrator = Migrator.new username + migrator.migrate +else + runner = MigrationRunner.new + runner.migrate +end