2019-02-13 22:33:31 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-08-24 12:49:21 +05:30
|
|
|
module Gitlab
|
|
|
|
class DowntimeCheck
|
|
|
|
class Message
|
2016-09-13 17:45:13 +05:30
|
|
|
attr_reader :path, :offline
|
2016-08-24 12:49:21 +05:30
|
|
|
|
2017-08-17 22:00:37 +05:30
|
|
|
OFFLINE = "\e[31moffline\e[0m".freeze
|
|
|
|
ONLINE = "\e[32monline\e[0m".freeze
|
2016-08-24 12:49:21 +05:30
|
|
|
|
|
|
|
# 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
|
|
|
|
|
2019-02-13 22:33:31 +05:30
|
|
|
message = ["[#{label}]: #{path}"]
|
2016-09-13 17:45:13 +05:30
|
|
|
|
|
|
|
if reason?
|
2019-02-13 22:33:31 +05:30
|
|
|
message << ":\n\n#{reason}\n\n"
|
2016-09-13 17:45:13 +05:30
|
|
|
end
|
2016-08-24 12:49:21 +05:30
|
|
|
|
2019-02-13 22:33:31 +05:30
|
|
|
message.join
|
2016-08-24 12:49:21 +05:30
|
|
|
end
|
2016-09-13 17:45:13 +05:30
|
|
|
|
|
|
|
def reason?
|
|
|
|
@reason.present?
|
|
|
|
end
|
|
|
|
|
|
|
|
def reason
|
|
|
|
@reason.strip.lines.map(&:strip).join("\n")
|
|
|
|
end
|
2016-08-24 12:49:21 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|