57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'app/models/process/naf/machine_upgrader.rb', line 57
def work_restore
begin
pickle_jar = JSON.parse(STDIN.read)
rescue StandardError => e
logger.fatal "this doesn't look like a naf upgrade stream to me, it is not json parserable!"
exit 1
end
unless pickle_jar.is_a?(Hash)
logger.fatal "this doesn't look like a naf upgrade stream to me, it is of type: #{pickle_jar.class.name}"
exit 1
end
pickle_jar_version = pickle_jar['version']
if pickle_jar_version.blank?
logger.fatal "this doesn't look like a naf upgrade stream to me, it has no version!"
exit 1
end
preserves = pickle_jar['preserves']
if preserves.nil?
logger.fatal "this doesn't look like a naf upgrade stream to me, there are no preserves!"
exit 1
end
unless preserves.is_a?(Hash)
logger.fatal "this doesn't look like a naf upgrade stream to me, the preserves are type: #{preserves.class.name}"
exit 1
end
check_for_clean_system unless @force
preserved_at_text = pickle_jar['preserved_at']
preserved_at = Time.parse(preserved_at_text) rescue "unknown"
logger.info "restoring:"
logger.info " preserved_at: #{preserved_at}"
logger.info " version: #{pickle_jar_version}"
logger.info " models: #{preserves.length}"
unpickler = ::Logical::Naf::Unpickler.new(preserves, PRESERVABLES, pickle_jar_version)
::Naf::NafBase.transaction do
unpickler.reconstitute
raise ActiveRecord::Rollback if @no_updates
end
logger.info "restoration complete! thank you!"
end
|