Use proper logger for migration script

This commit is contained in:
Garret Alfert 2016-02-24 12:48:12 +01:00
parent 570e3dcdb5
commit 3b391246ed

View File

@ -3,22 +3,28 @@
require "rest_client" require "rest_client"
require "redis" require "redis"
require "yaml" require "yaml"
require "logger"
class Migrator class Migrator
attr_accessor :username, :base_url, :swift_host, :swift_token, attr_accessor :username, :base_url, :swift_host, :swift_token,
:environment, :dry_run, :logging, :settings :environment, :dry_run, :settings, :logger
def initialize(username) def initialize(username)
@username = username @username = username
@environment = ENV["ENVIRONMENT"] || "staging" @environment = ENV["ENVIRONMENT"] || "staging"
@settings = YAML.load(File.read('config.yml'))[@environment] @settings = YAML.load(File.read('config.yml'))[@environment]
@swift_host = @settings["swift"]["host"] @swift_host = @settings["swift"]["host"]
@swift_token = File.read("tmp/swift_token.txt") @swift_token = File.read("tmp/swift_token.txt")
@dry_run = false # disables writing anything to Redis when true @dry_run = false # disables writing anything to Redis when true
@logging = true
@logger = Logger.new("log/migrate_metadata_to_redis.log")
log_level = ENV["LOGLEVEL"] || "INFO"
logger.level = Kernel.const_get "Logger::#{log_level}"
logger.progname = username
end end
def root_url def root_url
@ -34,16 +40,18 @@ class Migrator
end end
def migrate def migrate
logger.info "Starting migration for '#{username}'"
set_directory_backend("legacy_locked") set_directory_backend("legacy_locked")
begin begin
work_on_dir("", "") work_on_dir("", "")
rescue Exception => ex rescue Exception => ex
puts "Error migrating metadata for '#{username}': #{ex}" if logging logger.error "Error migrating metadata for '#{username}': #{ex}"
set_directory_backend("legacy") set_directory_backend("legacy")
# TODO write username to file for later reference # TODO write username to file for later reference
exit 1 exit 1
end end
set_directory_backend("new") set_directory_backend("new")
logger.info "Finished migration for '#{username}'"
end end
def set_directory_backend(backend) def set_directory_backend(backend)
@ -51,7 +59,7 @@ class Migrator
end end
def work_on_dir(directory, parent_directory) def work_on_dir(directory, parent_directory)
puts "retrieving listing for '#{parent_directory}#{directory}'" if logging logger.debug "Retrieving listing for '#{parent_directory}#{directory}'"
listing = get_directory_listing_from_swift("#{parent_directory}#{directory}") listing = get_directory_listing_from_swift("#{parent_directory}#{directory}")
@ -76,7 +84,7 @@ class Migrator
def add_item_to_parent_dir(dir, item) def add_item_to_parent_dir(dir, item)
key = "rs_meta:#{username}:#{parent_directory_for(dir)}:items" key = "rs_meta:#{username}:#{parent_directory_for(dir)}:items"
puts "adding item #{item} to #{key}" if logging logger.debug "Adding item #{item} to #{key}"
redis.sadd(key, item) unless dry_run redis.sadd(key, item) unless dry_run
end end
@ -84,7 +92,7 @@ class Migrator
key = "rs_meta:#{username}:#{dir.gsub(/^\//, "")}#{item}" key = "rs_meta:#{username}:#{dir.gsub(/^\//, "")}#{item}"
metadata = {etag: data["ETag"], modified: timestamp} metadata = {etag: data["ETag"], modified: timestamp}
puts "metadata for dir #{key}: #{metadata}" if logging logger.debug "Metadata for dir #{key}: #{metadata}"
redis.hmset(key, *metadata) unless dry_run redis.hmset(key, *metadata) unless dry_run
end end
@ -96,7 +104,7 @@ class Migrator
type: data["Content-Type"], type: data["Content-Type"],
modified: timestamp modified: timestamp
} }
puts "metadata for document #{key}: #{metadata}" if logging logger.debug "Metadata for document #{key}: #{metadata}"
redis.hmset(key, *metadata) unless dry_run redis.hmset(key, *metadata) unless dry_run
end end