2018-11-06 04:45:35 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-06-24 16:29:23 +00:00
|
|
|
module Gitlab
|
|
|
|
class DowntimeCheck
|
|
|
|
class Message
|
2016-08-17 10:15:20 +00:00
|
|
|
attr_reader :path, :offline
|
2016-06-24 16:29:23 +00:00
|
|
|
|
2017-02-21 23:32:18 +00:00
|
|
|
OFFLINE = "\e[31moffline\e[0m".freeze
|
|
|
|
ONLINE = "\e[32monline\e[0m".freeze
|
2016-06-24 16:29:23 +00:00
|
|
|
|
|
|
|
# path - The file path of the migration.
|
|
|
|
# offline - When set to `true` the migration will require downtime.
|
|
|
|
# reason - The reason as to why the migration requires downtime.
|
|
|
|
def initialize(path, offline = false, reason = nil)
|
|
|
|
@path = path
|
|
|
|
@offline = offline
|
|
|
|
@reason = reason
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_s
|
|
|
|
label = offline ? OFFLINE : ONLINE
|
|
|
|
|
2018-11-06 04:45:35 +00:00
|
|
|
message = ["[#{label}]: #{path}"]
|
2016-08-17 10:15:20 +00:00
|
|
|
|
|
|
|
if reason?
|
2018-11-06 04:45:35 +00:00
|
|
|
message << ":\n\n#{reason}\n\n"
|
2016-08-17 10:15:20 +00:00
|
|
|
end
|
2016-06-24 16:29:23 +00:00
|
|
|
|
2018-11-06 04:45:35 +00:00
|
|
|
message.join
|
2016-06-24 16:29:23 +00:00
|
|
|
end
|
2016-08-17 10:15:20 +00:00
|
|
|
|
|
|
|
def reason?
|
|
|
|
@reason.present?
|
|
|
|
end
|
|
|
|
|
|
|
|
def reason
|
|
|
|
@reason.strip.lines.map(&:strip).join("\n")
|
|
|
|
end
|
2016-06-24 16:29:23 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|