module Devops module Helpers class ResultObject # this method should be overrided in descendents def self.result_codes {ok: 0} end attr_reader :code def initialize(code) @code = code end def ok? @code == 0 end def reason self.class.result_codes.key(@code) || :unknown_error end def self.code_of_reason(reason) result_codes.fetch(reason) end def self.from_reason(reason) new(code_of_reason(reason)) end end end end